diff --git a/include/init/init.php b/include/init/init.php index 8e0fd2044..23c531d63 100755 --- a/include/init/init.php +++ b/include/init/init.php @@ -19,14 +19,17 @@ include_once __DIR__.'/../../core.php'; +use Modules\Anagrafiche\Tipo; + if (Update::isUpdateAvailable() || !$dbo->isInstalled()) { return; } -$has_azienda = $dbo->fetchNum("SELECT `an_anagrafiche`.`idanagrafica` FROM `an_anagrafiche` +$has_azienda = $dbo->fetchNum('SELECT `an_anagrafiche`.`idanagrafica` FROM `an_anagrafiche` LEFT JOIN `an_tipianagrafiche_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` - LEFT JOIN `an_tipianagrafiche` ON `an_tipianagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` -WHERE `an_tipianagrafiche`.`descrizione` = 'Azienda' AND `an_anagrafiche`.`deleted_at` IS NULL") != 0; + 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`.`id_lang`='.prepare(setting('Lingua')).") +WHERE `an_tipianagrafiche_lang`.`name` = 'Azienda' AND `an_anagrafiche`.`deleted_at` IS NULL") != 0; $has_user = $dbo->fetchNum('SELECT `id` FROM `zz_users`') != 0; $settings = [ @@ -168,7 +171,7 @@ if (!$has_azienda) {
'; - $idtipoanagrafica = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Azienda'")[0]['idtipoanagrafica']; + $idtipoanagrafica = (new Tipo())->getByName('Azienda')->id_record; $readonly_tipo = true; ob_start(); diff --git a/modules/aggiornamenti/src/Controlli/PianoConti.php b/modules/aggiornamenti/src/Controlli/PianoConti.php index 654356639..73aff2f09 100644 --- a/modules/aggiornamenti/src/Controlli/PianoConti.php +++ b/modules/aggiornamenti/src/Controlli/PianoConti.php @@ -53,19 +53,20 @@ class PianoConti extends Controllo * Verifico se serve creare un conto per eventuali nuovi clienti o fornitori. */ $anagrafiche_interessate = $database->fetchArray('SELECT - an_anagrafiche.idanagrafica AS id, - an_anagrafiche.idconto_cliente, - an_anagrafiche.idconto_fornitore, - an_anagrafiche.ragione_sociale, - GROUP_CONCAT(an_tipianagrafiche.descrizione) AS tipi_anagrafica - FROM an_anagrafiche - INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica = an_anagrafiche.idanagrafica - INNER JOIN an_tipianagrafiche ON an_tipianagrafiche.idtipoanagrafica = an_tipianagrafiche_anagrafiche.idtipoanagrafica - WHERE - (idconto_cliente = 0 OR idconto_cliente IS NULL OR idconto_fornitore = 0 OR idconto_fornitore IS NULL) - AND - deleted_at IS NULL - GROUP BY an_anagrafiche.idanagrafica'); + `an_anagrafiche`.`idanagrafica` AS id, + `an_anagrafiche`.`idconto_cliente`, + `an_anagrafiche`.`idconto_fornitore`, + `an_anagrafiche`.`ragione_sociale`, + GROUP_CONCAT(`an_tipianagrafiche_lang`.`name`) AS tipi_anagrafica + FROM `an_anagrafiche` + INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` + INNER 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`.`id_lang` = '.prepare(setting('Lingua')).') + WHERE + (`idconto_cliente` = 0 OR `idconto_cliente` IS NULL OR `idconto_fornitore` = 0 OR `idconto_fornitore` IS NULL) + AND + `deleted_at` IS NULL + GROUP BY `an_anagrafiche`.`idanagrafica`'); foreach ($anagrafiche_interessate as $anagrafica) { $tipi = explode(',', $anagrafica['tipi_anagrafica']); diff --git a/modules/aggiornamenti/src/Controlli/ReaValidi.php b/modules/aggiornamenti/src/Controlli/ReaValidi.php index 6049e5c80..37d7036c2 100644 --- a/modules/aggiornamenti/src/Controlli/ReaValidi.php +++ b/modules/aggiornamenti/src/Controlli/ReaValidi.php @@ -53,18 +53,19 @@ class ReaValidi extends Controllo * Verifico se i R.E.A. inseriti per le anagrafiche hanno una struttura valida. */ $anagrafiche_interessate = $database->fetchArray('SELECT - an_anagrafiche.idanagrafica AS id, - an_anagrafiche.codicerea, - an_anagrafiche.ragione_sociale, - GROUP_CONCAT(an_tipianagrafiche.descrizione) AS tipi_anagrafica - FROM an_anagrafiche - INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica = an_anagrafiche.idanagrafica - INNER JOIN an_tipianagrafiche ON an_tipianagrafiche.idtipoanagrafica = an_tipianagrafiche_anagrafiche.idtipoanagrafica + `an_anagrafiche`.`idanagrafica` AS id, + `an_anagrafiche`.`codicerea`, + `an_anagrafiche`.`ragione_sociale`, + GROUP_CONCAT(`an_tipianagrafiche_lang`.`name`) AS tipi_anagrafica + FROM `an_anagrafiche` + INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` + INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche`.id = `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` + LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche_lang`.`id_record` = `an_tipianagrafiche`.`id` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE - codicerea NOT REGEXP "([A-Za-z]{2})-([0-9]{1,20})" AND codicerea != "" + `codicerea` NOT REGEXP "([A-Za-z]{2})-([0-9]{1,20})" AND `codicerea` != "" AND - deleted_at IS NULL - GROUP BY an_anagrafiche.idanagrafica'); + `deleted_at` IS NULL + GROUP BY `an_anagrafiche`.`idanagrafica`'); foreach ($anagrafiche_interessate as $anagrafica) { /*$tipi = explode(',', $anagrafica['tipi_anagrafica']); diff --git a/modules/anagrafiche/actions.php b/modules/anagrafiche/actions.php index fb5010b0a..f6e0a7d88 100755 --- a/modules/anagrafiche/actions.php +++ b/modules/anagrafiche/actions.php @@ -197,7 +197,7 @@ switch (post('op')) { // Lettura tipologia dell'utente loggato $agente_is_logged = false; if (!empty($user['idanagrafica'])) { - $rs = $dbo->fetchArray('SELECT descrizione FROM an_tipianagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche.idtipoanagrafica = an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE idanagrafica = '.prepare($user['idanagrafica'])); + $rs = $dbo->fetchArray('SELECT `name` AS descrizione FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).') INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche`.`id` = `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` WHERE `idanagrafica` = '.prepare($user['idanagrafica'])); for ($i = 0; $i < count($rs); ++$i) { if ($rs[$i]['descrizione'] == 'Agente') { @@ -236,8 +236,7 @@ switch (post('op')) { echo json_encode(['id' => $id_record, 'text' => $anagrafica->ragione_sociale]); } - $descrizioni_tipi = $anagrafica->tipi()->get()->pluck('descrizione')->toArray(); - + $descrizioni_tipi = $anagrafica->tipi()->get()->pluck('name')->toArray(); flash()->info(tr('Aggiunta nuova anagrafica di tipo _TYPE_', [ '_TYPE_' => '"'.implode(', ', $descrizioni_tipi).'"', ])); diff --git a/modules/anagrafiche/add.php b/modules/anagrafiche/add.php index eb0b792aa..4e298de2b 100755 --- a/modules/anagrafiche/add.php +++ b/modules/anagrafiche/add.php @@ -21,11 +21,11 @@ use Modules\Anagrafiche\Nazione; include_once __DIR__.'/../../core.php'; -$id_nazione_italia = Nazione::where('nome', 'Italia')->first()->id; - -if (get('tipoanagrafica') != '') { - $rs = $dbo->fetchArray('SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='.prepare(get('tipoanagrafica'))); - $idtipoanagrafica = $rs[0]['idtipoanagrafica']; +$id_nazione_italia = (new Nazione())->getByName('Italia')->id_record; +$tipo = get('tipoanagrafica'); +if (!empty($tipo)) { + $rs = $dbo->fetchArray('SELECT `an_tipianagrafiche`.`id`, `an_tipianagrafiche_lang`.`name` as descrizione FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE name='.prepare($tipo)); + $idtipoanagrafica = $rs[0]['id']; } echo ' @@ -39,7 +39,7 @@ echo '
- {[ "type": "select", "label": "'.tr('Tipo di anagrafica').'", "name": "idtipoanagrafica[]", "id": "idtipoanagrafica_add", "multiple": "1", "required": 1, "values": "query=SELECT idtipoanagrafica AS id, descrizione FROM an_tipianagrafiche WHERE idtipoanagrafica NOT IN (SELECT DISTINCT(x.idtipoanagrafica) FROM an_tipianagrafiche_anagrafiche x INNER JOIN an_tipianagrafiche t ON x.idtipoanagrafica = t.idtipoanagrafica INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = x.idanagrafica WHERE t.descrizione = \'Azienda\' AND deleted_at IS NULL) ORDER BY descrizione", "value": "'.(isset($idtipoanagrafica) ? $idtipoanagrafica : null).'", "readonly": '.(!empty(get('readonly_tipo')) ? 1 : 0).' ]} + {[ "type": "select", "label": "'.tr('Tipo di anagrafica').'", "name": "idtipoanagrafica[]", "id": "idtipoanagrafica_add", "multiple": "1", "required": 1, "values": "query=SELECT `an_tipianagrafiche`.`id`, `name` as descrizione FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `an_tipianagrafiche`.`id` NOT IN (SELECT DISTINCT(`x`.`idtipoanagrafica`) FROM `an_tipianagrafiche_anagrafiche` x INNER JOIN `an_tipianagrafiche` t ON `x`.`idtipoanagrafica` = `t`.`id` LEFT JOIN `an_tipianagrafiche_lang` ON (`t`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).') INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `x`.`idanagrafica` WHERE `an_tipianagrafiche_lang`.`name` = \'Azienda\' AND `deleted_at` IS NULL) ORDER BY `name`", "value": "'.(isset($idtipoanagrafica) ? $idtipoanagrafica : null).'", "readonly": '.(!empty(get('readonly_tipo')) ? 1 : 0).' ]}
@@ -99,7 +99,7 @@ echo '
- {[ "type": "select", "label": "'.tr('Nazione').'", "name": "id_nazione", "id": "id_nazione_add", "values": "query=SELECT id AS id, CONCAT_WS(\' - \', iso2, nome) AS descrizione, iso2 FROM an_nazioni ORDER BY CASE WHEN iso2=\'IT\' THEN -1 ELSE iso2 END", "value": "'.$id_nazione_italia.'" ]} + {[ "type": "select", "label": "'.tr('Nazione').'", "name": "id_nazione", "id": "id_nazione_add", "values": "query=SELECT `an_nazioni`.`id` AS id, CONCAT_WS(\' - \', `iso2`, `an_nazioni_lang`.`name`) AS descrizione, `iso2` FROM `an_nazioni` LEFT JOIN `an_nazioni_lang` ON (`an_nazioni`.`id` = `an_nazioni_lang`.`id_record` AND `an_nazioni_lang`.`id_lang` = '.prepare(setting('Lingua')).') ORDER BY CASE WHEN `iso2`=\'IT\' THEN -1 ELSE `iso2` END", "value": "'.$id_nazione_italia.'" ]}
diff --git a/modules/anagrafiche/ajax/select.php b/modules/anagrafiche/ajax/select.php index b4b563c01..482e4e92b 100755 --- a/modules/anagrafiche/ajax/select.php +++ b/modules/anagrafiche/ajax/select.php @@ -26,62 +26,61 @@ switch ($resource) { $id_azienda = setting('Azienda predefinita'); $query = "SELECT - an_anagrafiche.idanagrafica AS id, - an_anagrafiche.lat, - an_anagrafiche.lng, - is_bloccata, - CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')')), IF(an_anagrafiche.deleted_at IS NULL, '', ' (".tr('eliminata').")'), IF(is_bloccata = 1, CONCAT(' (', an_relazioni.descrizione, ')'), ''),' - ', an_anagrafiche.codice ) AS descrizione, - idtipointervento_default AS idtipointervento, - in_tipiintervento.descrizione AS idtipointervento_descrizione, - an_anagrafiche.idzona, - contratto.id AS id_contratto, - contratto.descrizione AS descrizione_contratto, - co_pagamenti.id AS id_pagamento, - co_pagamenti.descrizione AS desc_pagamento, - banca_vendite.id AS id_banca_vendite, - CONCAT(banca_vendite.nome, ' - ', banca_vendite.iban) AS descrizione_banca_vendite + `an_anagrafiche`.`idanagrafica` AS id, + `an_anagrafiche`.`lat`, + `an_anagrafiche`.`lng`, + `is_bloccata`, + CONCAT(`ragione_sociale`, IF(`citta` IS NULL OR `citta` = '', '', CONCAT(' (', `citta`, ')')), IF(`an_anagrafiche`.`deleted_at` IS NULL, '', ' (".tr('eliminata').")'), IF(`is_bloccata` = 1, CONCAT(' (', `an_relazioni_lang`.`name`, ')'), ''),' - ', `an_anagrafiche`.`codice` ) AS descrizione, + `idtipointervento_default` AS idtipointervento, + `in_tipiintervento`.`descrizione` AS idtipointervento_descrizione, + `an_anagrafiche`.`idzona`, + `contratto`.`id` AS id_contratto, + `contratto`.`descrizione` AS descrizione_contratto, + `co_pagamenti`.`id` AS id_pagamento, + `co_pagamenti`.`descrizione` AS desc_pagamento, + `banca_vendite`.`id` AS id_banca_vendite, + CONCAT(`banca_vendite`.`nome`, ' - ', `banca_vendite`.`iban`) AS descrizione_banca_vendite FROM - an_anagrafiche - INNER JOIN (an_tipianagrafiche_anagrafiche - INNER JOIN an_tipianagrafiche - ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) - ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica LEFT JOIN in_tipiintervento ON an_anagrafiche.idtipointervento_default=in_tipiintervento.idtipointervento + `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` = ".setting('Lingua').')) + ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` LEFT JOIN `in_tipiintervento` ON `an_anagrafiche`.`idtipointervento_default`=`in_tipiintervento`.`idtipointervento` + 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`.`id_lang`= '.setting('Lingua').") LEFT JOIN - an_relazioni - ON an_anagrafiche.idrelazione=an_relazioni.id + (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 - (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 + `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_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 + `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 |where| ORDER BY - ragione_sociale'; + `ragione_sociale`'; foreach ($elements as $element) { - $filter[] = 'an_anagrafiche.idanagrafica='.prepare($element); + $filter[] = '`an_anagrafiche`.`idanagrafica`='.prepare($element); } - $where[] = "an_tipianagrafiche.descrizione='Cliente'"; + $where[] = "`an_tipianagrafiche_lang`.`name`='Cliente'"; if (empty($filter)) { - $where[] = 'an_anagrafiche.deleted_at IS NULL'; + $where[] = '`an_anagrafiche`.`deleted_at` IS NULL'; if (!empty($filter_agente)) { - $where[] = 'idagente = '.Auth::user()['idanagrafica']; + $where[] = '`idagente` = '.Auth::user()['idanagrafica']; } } if (!empty($search)) { - $search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'citta LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'an_anagrafiche.piva LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'an_anagrafiche.codice_fiscale LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`ragione_sociale` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`citta` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`provincia` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_anagrafiche`.`codice` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_anagrafiche`.`piva` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_anagrafiche`.`codice_fiscale` LIKE '.prepare('%'.$search.'%'); } $data = AJAX::selectResults($query, $where, $filter, $search_fields, $limit, $custom); @@ -104,47 +103,47 @@ 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.idtipoanagrafica) 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`.`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`'; foreach ($elements as $element) { - $filter[] = 'an_anagrafiche.idanagrafica='.prepare($element); + $filter[] = '`an_anagrafiche`.`idanagrafica`='.prepare($element); } - $where[] = "an_tipianagrafiche.descrizione='Fornitore'"; if (empty($filter)) { - $where[] = 'an_anagrafiche.deleted_at IS NULL'; + $where[] = "`name` = 'Fornitore'"; + $where[] = '`an_anagrafiche`.`deleted_at` IS NULL'; } if (!empty($search)) { - $search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'citta LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'an_anagrafiche.piva LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'an_anagrafiche.codice_fiscale LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`ragione_sociale` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`citta` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`provincia` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_anagrafiche`.`codice` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_anagrafiche`.`piva` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_anagrafiche`.`codice_fiscale` LIKE '.prepare('%'.$search.'%'); } break; case 'vettori': - $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 FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| 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 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` |where| ORDER BY `ragione_sociale`'; foreach ($elements as $element) { - $filter[] = 'an_anagrafiche.idanagrafica='.prepare($element); + $filter[] = '`an_anagrafiche`.`idanagrafica`='.prepare($element); } - $where[] = "descrizione='Vettore'"; + $where[] = "`name`='Vettore'"; if (empty($filter)) { - $where[] = 'an_anagrafiche.deleted_at IS NULL'; + $where[] = '`an_anagrafiche`.`deleted_at` IS NULL'; } if (!empty($search)) { - $search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'citta LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'an_anagrafiche.piva LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'an_anagrafiche.codice_fiscale LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`ragione_sociale` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`citta` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`provincia` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_anagrafiche`.`codice` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_anagrafiche`.`piva` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_anagrafiche`.`codice_fiscale` LIKE '.prepare('%'.$search.'%'); } break; @@ -154,31 +153,31 @@ switch ($resource) { * - idanagrafica */ case 'agenti': - $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 FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| 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` 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` |where| ORDER BY `ragione_sociale`'; foreach ($elements as $element) { - $filter[] = 'an_anagrafiche.idanagrafica='.prepare($element); + $filter[] = '`an_anagrafiche`.`idanagrafica`='.prepare($element); } - $where[] = "descrizione='Agente'"; + $where[] = "`name`='Agente'"; if (empty($filter)) { - $where[] = 'an_anagrafiche.deleted_at IS NULL'; + $where[] = '`an_anagrafiche`.`deleted_at` IS NULL'; } if (!empty($search)) { - $search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'citta LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'an_anagrafiche.piva LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'an_anagrafiche.codice_fiscale LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`ragione_sociale` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`citta` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`provincia` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_anagrafiche`.`codice` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_anagrafiche`.`piva` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_anagrafiche`.`codice_fiscale` LIKE '.prepare('%'.$search.'%'); } $results = AJAX::selectResults($query, $where, $filter, $search, $limit, $custom); // Evidenzia l'agente di default if ($superselect['idanagrafica']) { - $rsa = $dbo->fetchArray('SELECT idagente FROM an_anagrafiche WHERE idanagrafica='.prepare($superselect['idanagrafica'])); + $rsa = $dbo->fetchArray('SELECT `idagente` FROM `an_anagrafiche` WHERE `idanagrafica`='.prepare($superselect['idanagrafica'])); $idagente_default = $rsa[0]['idagente']; } else { $idagente_default = 0; @@ -192,57 +191,57 @@ switch ($resource) { break; case 'tecnici': - $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 FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| 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` 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` |where| ORDER BY `ragione_sociale`'; foreach ($elements as $element) { - $filter[] = 'an_anagrafiche.idanagrafica='.prepare($element); + $filter[] = '`an_anagrafiche`.`idanagrafica`='.prepare($element); } - $where[] = "descrizione='Tecnico'"; + $where[] = "`name`='Tecnico'"; if (empty($filter)) { - $where[] = 'an_anagrafiche.deleted_at IS NULL'; + $where[] = '`an_anagrafiche`.`deleted_at` IS NULL'; if (setting('Permetti inserimento sessioni degli altri tecnici')) { } else { // come tecnico posso aprire attività solo a mio nome $user = Auth::user(); if ($user['gruppo'] == 'Tecnici' && !empty($user['idanagrafica'])) { - $where[] = 'an_anagrafiche.idanagrafica='.$user['idanagrafica']; + $where[] = '`an_anagrafiche`.`idanagrafica`='.$user['idanagrafica']; } } } if (!empty($search)) { - $search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'citta LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'an_anagrafiche.piva LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'an_anagrafiche.codice_fiscale LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`ragione_sociale` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`citta` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`provincia` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_anagrafiche`.`codice` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_anagrafiche`.`piva` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_anagrafiche`.`codice_fiscale` LIKE '.prepare('%'.$search.'%'); } break; case 'clienti_fornitori': - $query = "SELECT `an_anagrafiche`.`idanagrafica` AS id, CONCAT_WS('', ragione_sociale, IF(citta !='' OR provincia != '', CONCAT(' (', citta, IF(provincia!='', CONCAT(' ', provincia), ''), ')'), ''), IF(an_anagrafiche.deleted_at IS NULL, '', ' (".tr('eliminata').")'),' - ', an_anagrafiche.codice) AS descrizione, `an_tipianagrafiche`.`descrizione` AS optgroup, idtipointervento_default, an_tipianagrafiche.idtipoanagrafica FROM `an_tipianagrafiche` INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` |where| ORDER BY `optgroup` ASC, ragione_sociale ASC"; + $query = "SELECT `an_anagrafiche`.`idanagrafica` AS id, CONCAT_WS('', `ragione_sociale`, IF(`citta` !='' OR `provincia` != '', CONCAT(' (', `citta`, IF(`provincia`!='', CONCAT(' ', `provincia`), ''), ')'), ''), IF(`an_anagrafiche`.`deleted_at` IS NULL, '', ' (".tr('eliminata').")'),' - ', `an_anagrafiche`.`codice`) AS descrizione, `an_tipianagrafiche_lang`.`name` AS optgroup, `idtipointervento_default`, `an_tipianagrafiche`.`id` as id_tipo FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = ".prepare(setting('Lingua')).') INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche`.`id`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` |where| ORDER BY `optgroup` ASC, `ragione_sociale` ASC'; foreach ($elements as $element) { - $filter[] = 'an_anagrafiche.idanagrafica='.prepare($element); + $filter[] = '`an_anagrafiche`.`idanagrafica`='.prepare($element); } $where = []; if (empty($filter)) { - $where[] = 'an_anagrafiche.deleted_at IS NULL'; - $where[] = "an_tipianagrafiche_anagrafiche.idtipoanagrafica IN (SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione = 'Cliente' OR descrizione = 'Fornitore' OR descrizione = 'Azienda')"; + $where[] = '`an_anagrafiche`.`deleted_at` IS NULL'; + $where[] = '`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` IN (SELECT `an_tipianagrafiche`.`id` FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).") WHERE `name` = 'Cliente' OR `name` = 'Fornitore' OR `name` = 'Azienda')"; } if (!empty($search)) { - $search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'citta LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'an_anagrafiche.piva LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'an_anagrafiche.codice_fiscale LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`ragione_sociale` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`citta` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`provincia` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_anagrafiche`.`codice` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_anagrafiche`.`piva` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_anagrafiche`.`codice_fiscale` LIKE '.prepare('%'.$search.'%'); } // Aggiunta filtri di ricerca @@ -274,23 +273,23 @@ switch ($resource) { // Nota Bene: nel campo id viene specificato idtipoanagrafica-idanagrafica -> modulo Utenti e permessi, creazione nuovo utente case 'anagrafiche': - $query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT_WS('', ragione_sociale, IF(citta !='' OR provincia != '', CONCAT(' (', citta, IF(provincia!='', CONCAT(' ', provincia), ''), ')'), ''), IF(an_anagrafiche.deleted_at IS NULL, '', ' (".tr('eliminata').")'),' - ', an_anagrafiche.codice) AS descrizione, `an_tipianagrafiche`.`descrizione` AS optgroup FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY `optgroup` ASC, ragione_sociale ASC"; + $query = "SELECT `an_anagrafiche`.`idanagrafica` AS id, CONCAT_WS('', `ragione_sociale`, IF(`citta` !='' OR `provincia` != '', CONCAT(' (', `citta`, IF(`provincia`!='', CONCAT(' ', `provincia`), ''), ')'), ''), IF(`an_anagrafiche`.`deleted_at` IS NULL, '', ' (".tr('eliminata').")'),' - ', `an_anagrafiche`.`codice`) AS descrizione, `an_tipianagrafiche_lang`.`name` AS optgroup 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` |where| ORDER BY `optgroup` ASC, `ragione_sociale` ASC'; foreach ($elements as $element) { - $filter[] = 'an_anagrafiche.idanagrafica='.prepare($element); + $filter[] = '`an_anagrafiche`.`idanagrafica`='.prepare($element); } if (empty($filter)) { - $where[] = 'an_anagrafiche.deleted_at IS NULL'; + $where[] = '`an_anagrafiche`.`deleted_at` IS NULL'; } if (!empty($search)) { - $search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'citta LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'an_anagrafiche.piva LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'an_anagrafiche.codice_fiscale LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`ragione_sociale` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`citta` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`provincia` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_anagrafiche`.`codice` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_anagrafiche`.`piva` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_anagrafiche`.`codice_fiscale` LIKE '.prepare('%'.$search.'%'); } // Aggiunta filtri di ricerca @@ -329,26 +328,26 @@ switch ($resource) { SELECT * FROM - (SELECT '0' AS id, (SELECT lat FROM an_anagrafiche |where|) AS lat, (SELECT lng FROM an_anagrafiche |where|) AS lng, (SELECT idzona FROM an_anagrafiche |where|) AS idzona, CONCAT_WS(' - ', \"".tr('Sede legale')."\" , (SELECT CONCAT (citta, IF(indirizzo!='',CONCAT(' (', indirizzo, ')'), ''), ' (',ragione_sociale,')') FROM an_anagrafiche |where|)) AS descrizione + (SELECT '0' AS id, (SELECT `lat` FROM `an_anagrafiche` |where|) AS lat, (SELECT `lng` FROM `an_anagrafiche` |where|) AS lng, (SELECT `idzona` FROM `an_anagrafiche` |where|) AS idzona, CONCAT_WS(' - ', \"".tr('Sede legale')."\" , (SELECT CONCAT (`citta`, IF(`indirizzo`!='',CONCAT(' (', `indirizzo`, ')'), ''), ' (',`ragione_sociale`,')') FROM `an_anagrafiche` |where|)) AS descrizione UNION SELECT - id, - lat, - lng, - idzona, - CONCAT_WS(' - ', nomesede, CONCAT(citta, IF(indirizzo!='',CONCAT(' (', indirizzo, ')'), '')) ) FROM an_sedi |where|) AS tab + `id`, + `lat`, + `lng`, + `idzona`, + CONCAT_WS(' - ', `nomesede`, CONCAT(`citta`, IF(indirizzo!='',CONCAT(' (', `indirizzo`, ')'), '')) ) FROM `an_sedi` |where|) AS tab HAVING - descrizione LIKE ".prepare('%'.$search.'%').' + `descrizione` LIKE ".prepare('%'.$search.'%').' ORDER BY - descrizione'; + `descrizione`'; foreach ($elements as $element) { - $filter[] = 'id='.prepare($element); + $filter[] = '`id`='.prepare($element); } - $where[] = 'idanagrafica='.prepare($superselect['idanagrafica']); + $where[] = '`idanagrafica`='.prepare($superselect['idanagrafica']); /* if (!empty($search)) { @@ -362,21 +361,21 @@ switch ($resource) { $user = Auth::user(); $id_azienda = setting('Azienda predefinita'); - $query = "SELECT * FROM (SELECT '0' AS id, 'Sede legale' AS nomesede, CONCAT_WS(' - ', \"".tr('Sede legale')."\" , (SELECT CONCAT (citta, IF(indirizzo!='',CONCAT(' (', indirizzo, ')'), ''),' (', ragione_sociale,')') FROM an_anagrafiche |where|)) AS descrizione UNION SELECT id, nomesede, CONCAT_WS(' - ', nomesede, CONCAT(citta, IF(indirizzo!='',CONCAT(' (', indirizzo, ')'), '')) ) FROM an_sedi |where|) AS tab |filter| ORDER BY descrizione"; + $query = "SELECT * FROM (SELECT '0' AS id, 'Sede legale' AS `nomesede`, CONCAT_WS(' - ', \"".tr('Sede legale')."\" , (SELECT CONCAT (`citta`, IF(`indirizzo`!='',CONCAT(' (', `indirizzo`, ')'), ''),' (', `ragione_sociale`,')') FROM `an_anagrafiche` |where|)) AS descrizione UNION SELECT `id`, `nomesede`, CONCAT_WS(' - ', `nomesede`, CONCAT(`citta`, IF(`indirizzo`!='',CONCAT(' (', `indirizzo`, ')'), '')) ) FROM `an_sedi` |where|) AS tab |filter| ORDER BY descrizione"; foreach ($elements as $element) { - $filter[] = 'id='.prepare($element); + $filter[] = '`id`='.prepare($element); } - $where[] = 'idanagrafica='.prepare($id_azienda); + $where[] = '`idanagrafica`='.prepare($id_azienda); // admin o utente senza una sede prefissata, avrà accesso a tutte le sedi if (!empty($user->sedi) and !$user->is_admin) { - $where[] = 'id IN('.implode(',', $user->sedi).')'; + $where[] = '`id` IN('.implode(',', $user->sedi).')'; } if (!empty($search)) { - $search_fields[] = 'nomesede LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'citta LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`nomesede` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`citta` LIKE '.prepare('%'.$search.'%'); } break; @@ -387,100 +386,100 @@ switch ($resource) { */ case 'referenti': if (isset($superselect['idanagrafica'])) { - $query = 'SELECT an_referenti.id, an_referenti.nome AS descrizione, an_mansioni.nome AS optgroup FROM an_referenti LEFT JOIN an_mansioni ON an_referenti.idmansione=an_mansioni.id |where| ORDER BY optgroup, an_referenti.nome'; + $query = 'SELECT `an_referenti`.`id`, `an_referenti`.`nome` AS descrizione, `an_mansioni`.`nome` AS optgroup FROM `an_referenti` LEFT JOIN `an_mansioni` ON `an_referenti`.`idmansione`=`an_mansioni`.`id` |where| ORDER BY optgroup, `an_referenti`.`nome`'; foreach ($elements as $element) { - $filter[] = 'an_referenti.id='.prepare($element); + $filter[] = '`an_referenti`.`id`='.prepare($element); } if (isset($superselect['idclientefinale'])) { - $where[] = '(idanagrafica='.prepare($superselect['idanagrafica']).' OR idanagrafica='.prepare($superselect['idclientefinale']).')'; + $where[] = '(`idanagrafica`='.prepare($superselect['idanagrafica']).' OR `idanagrafica`='.prepare($superselect['idclientefinale']).')'; } else { - $where[] = 'idanagrafica='.prepare($superselect['idanagrafica']); + $where[] = '`idanagrafica`='.prepare($superselect['idanagrafica']); } if (isset($superselect['idsede_destinazione'])) { - $where[] = 'idsede='.prepare($superselect['idsede_destinazione']); + $where[] = '`idsede`='.prepare($superselect['idsede_destinazione']); } if (!empty($search)) { - $search_fields[] = 'an_referenti.nome LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_referenti`.`nome` LIKE '.prepare('%'.$search.'%'); } } break; case 'nazioni': - $query = 'SELECT id AS id, iso2, CONCAT_WS(\' - \', iso2, nome) AS descrizione FROM an_nazioni |where| ORDER BY CASE WHEN iso2=\'IT\' THEN -1 ELSE iso2 END'; + $query = 'SELECT `an_nazioni`.`id` AS id, `iso2`, CONCAT_WS(\' - \', `iso2`, `an_nazioni_lang`.`name`) AS descrizione FROM `an_nazioni` LEFT JOIN `an_nazioni_lang` ON (`an_nazioni`.`id` = `an_nazioni_lang`.`id_record` AND `an_nazioni_lang`.`id_lang` = '.prepare(setting('Lingua')).') |where| ORDER BY CASE WHEN `iso2`=\'IT\' THEN -1 ELSE `iso2` END'; foreach ($elements as $element) { - $filter[] = 'id='.prepare($element); + $filter[] = '`an_nazioni`.`id`='.prepare($element); } if (!empty($search)) { - $search_fields[] = 'nome LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'iso2 LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'CONCAT_WS(\' - \', iso2, nome) LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_nazioni_lang`.`name` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`iso2` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = 'CONCAT_WS(\' - \', `iso2`, `name`) LIKE '.prepare('%'.$search.'%'); } break; case 'regioni': if (isset($superselect['id_nazione'])) { - $query = 'SELECT an_regioni.id AS id, an_regioni.iso2, CONCAT(CONCAT_WS(\' - \', an_regioni.iso2, an_regioni.nome), \' (\', an_nazioni.iso2, \')\') AS descrizione FROM an_regioni INNER JOIN an_nazioni ON an_regioni.id_nazione = an_nazioni.id |where| ORDER BY an_regioni.nome'; + $query = 'SELECT `an_regioni`.`id` AS id, `an_regioni`.`iso2`, CONCAT(CONCAT_WS(\' - \', `an_regioni`.`iso2`, `an_regioni_lang`.`name`), \' (\', `an_nazioni`.`iso2`, \')\') AS descrizione FROM `an_regioni` LEFT JOIN `an_regioni_lang` ON (`an_regioni`.`id` = `an_regioni_lang`.`id_record` AND `an_regioni_lang`.`id_lang` = '.prepare(setting('Lingua')).') INNER JOIN `an_nazioni` ON `an_regioni`.`id_nazione` = `an_nazioni`.`id` |where| ORDER BY `an_regioni_lang`.`name`'; foreach ($elements as $element) { - $filter[] = 'an_regioni.id='.prepare($element); + $filter[] = '`an_regioni`.`id`='.prepare($element); } - $where[] = 'an_regioni.id_nazione='.prepare($superselect['id_nazione']); + $where[] = '`an_regioni`.`id_nazione`='.prepare($superselect['id_nazione']); if (!empty($search)) { - $search_fields[] = 'an_regioni.nome LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'an_regioni.iso2 LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'CONCAT_WS(\' - \', an_regioni.iso2, an_regioni.nome) LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_regioni_lang`.`name` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_regioni`.`iso2` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = 'CONCAT_WS(\' - \', `an_regioni`.`iso2`, `an_regioni_lang`.`name`) LIKE '.prepare('%'.$search.'%'); } } break; case 'relazioni': - $query = "SELECT id, CONCAT(descrizione, IF(an_relazioni.deleted_at IS NULL, '', ' (".tr('eliminata').")')) AS descrizione, colore AS _bgcolor_ FROM an_relazioni |where| ORDER BY descrizione"; + $query = "SELECT `an_relazioni`.`id`, CONCAT(`name`, IF(`an_relazioni`.`deleted_at` IS NULL, '', ' (".tr('eliminata').")')) AS descrizione, `colore` AS _bgcolor_ FROM `an_relazioni` LEFT JOIN `an_relazioni_lang` ON (`an_relazioni`.`id` = `an_relazioni_lang`.`id_record` AND `an_relazioni_lang`.`id_lang` = ".prepare(setting('Lingua')).') |where| ORDER BY descrizione'; foreach ($elements as $element) { - $filter[] = 'id='.prepare($element); + $filter[] = '`an_relazioni`.`id`='.prepare($element); } if (empty($filter)) { - $where[] = 'an_relazioni.deleted_at IS NULL'; + $where[] = '`an_relazioni`.`deleted_at` IS NULL'; } if (!empty($search)) { - $search_fields[] = 'descrizione LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_relazioni_lang`.`name` LIKE '.prepare('%'.$search.'%'); } break; case 'provenienze': - $query = 'SELECT id, descrizione, colore AS bgcolor FROM an_provenienze |where| ORDER BY descrizione'; + $query = 'SELECT `an_provenienze`.`id`, `an_provenienze_lang`.`name` as descrizione, `colore` AS bgcolor FROM `an_provenienze` LEFT JOIN `an_provenienze_lang` ON (`an_provenienze`.`id` = `an_provenienze_lang`.`id_record` AND `an_provenienze_lang`.`id_lang` = '.prepare(setting('Lingua')).') |where| ORDER BY `descrizione`'; foreach ($elements as $element) { - $filter[] = 'id='.prepare($element); + $filter[] = '`an_provenienze`.`id`='.prepare($element); } if (!empty($search)) { - $search_fields[] = 'descrizione LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_provenienze_lang`.`name` LIKE '.prepare('%'.$search.'%'); } break; case 'settori': - $query = 'SELECT id, descrizione FROM an_settori |where| ORDER BY descrizione'; + $query = 'SELECT `an_settori`.`id`, `an_settori_lang`.`name` as descrizione FROM `an_settori` LEFT JOIN `an_settori_lang` ON (`an_settori`.`id` = `an_settori_lang`.`id_record` AND `an_settori_lang`.`id_lang` = '.prepare(setting('Lingua')).') |where| ORDER BY `name`'; foreach ($elements as $element) { - $filter[] = 'id='.prepare($element); + $filter[] = '`an_settori`.`id`='.prepare($element); } if (!empty($search)) { - $search_fields[] = 'descrizione LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`name` LIKE '.prepare('%'.$search.'%'); } break; diff --git a/modules/anagrafiche/bulk.php b/modules/anagrafiche/bulk.php index d39f2b85f..a4ae7bc62 100755 --- a/modules/anagrafiche/bulk.php +++ b/modules/anagrafiche/bulk.php @@ -26,15 +26,15 @@ include_once __DIR__.'/../../core.php'; switch (post('op')) { case 'delete-bulk': - $id_tipo_azienda = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Azienda'")[0]['idtipoanagrafica']; + $id_tipo_azienda = $dbo->fetchArray('SELECT `an_tipianagrafiche`.`id` FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).") WHERE `name`='Azienda'")[0]['id']; foreach ($id_records as $id) { - $anagrafica = $dbo->fetchArray('SELECT an_tipianagrafiche.idtipoanagrafica FROM an_tipianagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche.idtipoanagrafica=an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE idanagrafica='.prepare($id)); + $anagrafica = $dbo->fetchArray('SELECT `an_tipianagrafiche`.`id` FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).') INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche`.`id`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` WHERE `idanagrafica`='.prepare($id)); $tipi = array_column($anagrafica, 'idtipoanagrafica'); // Se l'anagrafica non è di tipo Azienda if (!in_array($id_tipo_azienda, $tipi)) { - $dbo->query('UPDATE an_anagrafiche SET deleted_at = NOW() WHERE idanagrafica = '.prepare($id).Modules::getAdditionalsQuery($id_module)); + $dbo->query('UPDATE `an_anagrafiche` SET `deleted_at` = NOW() WHERE `idanagrafica` = '.prepare($id).Modules::getAdditionalsQuery($id_module)); } } diff --git a/modules/anagrafiche/edit.php b/modules/anagrafiche/edit.php index 232ae8f37..0f0326e18 100755 --- a/modules/anagrafiche/edit.php +++ b/modules/anagrafiche/edit.php @@ -30,7 +30,7 @@ $is_agente = in_array($id_agente, $tipi_anagrafica); $is_azienda = in_array($id_azienda, $tipi_anagrafica); if (!$is_cliente && !$is_fornitore && !$is_azienda && $is_tecnico) { - $ignore = $dbo->fetchArray("SELECT id FROM zz_plugins WHERE name='Sedi' OR name='Referenti' OR name='Dichiarazioni d\'intento'"); + $ignore = $dbo->fetchArray("SELECT `id` FROM `zz_plugins` WHERE `name`='Sedi' OR `name`='Referenti' OR `name`='Dichiarazioni d\'intento'"); foreach ($ignore as $plugin) { echo ' @@ -41,7 +41,7 @@ if (!$is_cliente && !$is_fornitore && !$is_azienda && $is_tecnico) { } if (!$is_cliente) { - $ignore = $dbo->fetchArray("SELECT id FROM zz_plugins WHERE name IN ('Impianti del cliente','Contratti del cliente','Ddt del cliente')"); + $ignore = $dbo->fetchArray("SELECT `id` FROM `zz_plugins` WHERE `name` IN ('Impianti del cliente','Contratti del cliente','Ddt del cliente')"); foreach ($ignore as $plugin) { echo ' @@ -530,13 +530,13 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
- {[ "type": "select", "label": "'.tr('Agente principale').'", "name": "idagente", "values": "query=SELECT an_anagrafiche.idanagrafica AS id, IF(deleted_at IS NOT NULL, CONCAT(ragione_sociale, \' (Eliminato)\'), ragione_sociale ) AS descrizione FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE (descrizione=\'Agente\' AND deleted_at IS NULL)'.(isset($record['idagente']) ? 'OR (an_anagrafiche.idanagrafica = '.prepare($record['idagente']).' AND deleted_at IS NOT NULL) ' : '').'ORDER BY ragione_sociale", "value": "$idagente$" ]} + {[ "type": "select", "label": "'.tr('Agente principale').'", "name": "idagente", "values": "query=SELECT `an_anagrafiche`.`idanagrafica` AS id, IF(deleted_at IS NOT NULL, CONCAT(`ragione_sociale`, \' (Eliminato)\'), `ragione_sociale` ) AS descrizione 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_lang`.`id_record` = `an_tipianagrafiche`.`id` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).')) ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` WHERE (`name`=\'Agente\' AND `deleted_at` IS NULL)'.(isset($record['idagente']) ? 'OR (`an_anagrafiche`.`idanagrafica` = '.prepare($record['idagente']).' AND `deleted_at` IS NOT NULL) ' : '').'ORDER BY `ragione_sociale`", "value": "$idagente$" ]}
- {[ "type": "select", "label": "'.tr('Agenti secondari').'", "multiple": "1", "name": "idagenti[]", "values": "query=SELECT an_anagrafiche.idanagrafica AS id, IF(deleted_at IS NOT NULL, CONCAT(ragione_sociale, \' (Eliminato)\'), ragione_sociale ) AS descrizione FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE (descrizione=\'Agente\' AND deleted_at IS NULL AND an_anagrafiche.idanagrafica NOT IN (SELECT idagente FROM an_anagrafiche WHERE idanagrafica = '.prepare($record['idanagrafica']).')) OR (an_anagrafiche.idanagrafica IN (SELECT idagente FROM an_anagrafiche_agenti WHERE idanagrafica = '.prepare($record['idanagrafica']).') ) ORDER BY ragione_sociale", "value": "$idagenti$" ]} + {[ "type": "select", "label": "'.tr('Agenti secondari').'", "multiple": "1", "name": "idagenti[]", "values": "query=SELECT `an_anagrafiche`.`idanagrafica` AS id, IF(`deleted_at` IS NOT NULL, CONCAT(`ragione_sociale`, \' (Eliminato)\'), `ragione_sociale` ) AS descrizione 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_lang`.`id_record` = `an_tipianagrafiche`.`id` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).')) ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` WHERE (`name`=\'Agente\' AND `deleted_at` IS NULL AND `an_anagrafiche`.`idanagrafica` NOT IN (SELECT `idagente` FROM `an_anagrafiche` WHERE `idanagrafica` = '.prepare($record['idanagrafica']).')) OR (`an_anagrafiche`.`idanagrafica` IN (SELECT `idagente` FROM `an_anagrafiche_agenti` WHERE `idanagrafica` = '.prepare($record['idanagrafica']).') ) ORDER BY `ragione_sociale`", "value": "$idagenti$" ]}
@@ -704,7 +704,7 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
- {[ "type": "select", "multiple": "1", "label": "", "name": "idtipoanagrafica[]", "values": "query=SELECT idtipoanagrafica AS id, descrizione FROM an_tipianagrafiche WHERE idtipoanagrafica NOT IN (SELECT DISTINCT(x.idtipoanagrafica) FROM an_tipianagrafiche_anagrafiche x INNER JOIN an_tipianagrafiche t ON x.idtipoanagrafica = t.idtipoanagrafica INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = x.idanagrafica WHERE t.descrizione = 'Azienda' AND deleted_at IS NULL) ORDER BY descrizione", "value": "$idtipianagrafica$" ]} + {[ "type": "select", "multiple": "1", "label": "", "name": "idtipoanagrafica[]", "values": "query=SELECT `an_tipianagrafiche`.`id`, `name` as descrizione FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = ) WHERE `an_tipianagrafiche`.`id` NOT IN (SELECT DISTINCT(`x`.`idtipoanagrafica`) FROM `an_tipianagrafiche_anagrafiche` x INNER JOIN `an_tipianagrafiche` t ON `x`.`idtipoanagrafica` = `t`.`id` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche_lang`.`id_record` = `t`.`id` AND `an_tipianagrafiche_lang`.`id_lang` = ) INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `x`.`idanagrafica` WHERE `an_tipianagrafiche_lang`.`name` = 'Azienda' AND `deleted_at` IS NULL) ORDER BY `name`", "value": "$idtipianagrafica$" ]} fetchArray('SELECT idtipoanagrafica, descrizione FROM an_tipianagrafiche'); +$rs = $dbo->fetchArray('SELECT `an_tipianagrafiche`.`id`, `name` descrizione FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche_lang`.`id_record` = `an_tipianagrafiche`.`id` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).')'); foreach ($rs as $riga) { - ${'id_'.strtolower($riga['descrizione'])} = $riga['idtipoanagrafica']; + ${'id_'.strtolower($riga['descrizione'])} = $riga['id']; } if (isset($id_record)) { $anagrafica = Anagrafica::withTrashed()->find($id_record); $record = $dbo->fetchOne('SELECT *, - (SELECT GROUP_CONCAT(an_tipianagrafiche.idtipoanagrafica) FROM an_tipianagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche.idtipoanagrafica=an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE idanagrafica=an_anagrafiche.idanagrafica) AS idtipianagrafica, - (SELECT GROUP_CONCAT(idagente) FROM an_anagrafiche_agenti WHERE idanagrafica=an_anagrafiche.idanagrafica) AS idagenti, - (SELECT GROUP_CONCAT(descrizione) FROM an_tipianagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche.idtipoanagrafica=an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE idanagrafica=an_anagrafiche.idanagrafica) AS tipianagrafica - FROM an_anagrafiche WHERE idanagrafica='.prepare($id_record)); + (SELECT GROUP_CONCAT(`an_tipianagrafiche`.`id`) FROM `an_tipianagrafiche` INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche`.`id`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` WHERE `idanagrafica`=`an_anagrafiche`.`idanagrafica`) AS idtipianagrafica, + (SELECT GROUP_CONCAT(`idagente`) FROM `an_anagrafiche_agenti` WHERE `idanagrafica`=`an_anagrafiche`.`idanagrafica`) AS idagenti, + (SELECT GROUP_CONCAT(`name`) FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id`=`an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang`='.prepare(setting('Lingua')).') INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche`.`id`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` WHERE `idanagrafica`=`an_anagrafiche`.`idanagrafica`) AS tipianagrafica + FROM `an_anagrafiche` WHERE `idanagrafica`='.prepare($id_record)); // Cast per latitudine e longitudine if (!empty($record)) { @@ -41,6 +41,6 @@ if (isset($id_record)) { $record['lng'] = floatval($record['lng']); } - $tipi_anagrafica = $dbo->fetchArray('SELECT an_tipianagrafiche.idtipoanagrafica FROM an_tipianagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche.idtipoanagrafica=an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE idanagrafica='.prepare($id_record)); - $tipi_anagrafica = array_column($tipi_anagrafica, 'idtipoanagrafica'); + $tipi_anagrafica = $dbo->fetchArray('SELECT `an_tipianagrafiche`.`id` FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id`=`an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang`='.prepare(setting('Lingua')).') INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche`.`id`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` WHERE `idanagrafica`='.prepare($id_record)); + $tipi_anagrafica = array_column($tipi_anagrafica, 'id'); } diff --git a/modules/anagrafiche/src/API/v1/Anagrafiche.php b/modules/anagrafiche/src/API/v1/Anagrafiche.php index 1875ca617..d60b77194 100755 --- a/modules/anagrafiche/src/API/v1/Anagrafiche.php +++ b/modules/anagrafiche/src/API/v1/Anagrafiche.php @@ -30,20 +30,20 @@ class Anagrafiche extends Resource implements RetrieveInterface, CreateInterface { public function retrieve($request) { - $table = 'an_anagrafiche'; + $table = '`an_anagrafiche`'; $select = [ - 'an_anagrafiche.*', - 'an_nazioni.nome AS nazione', + '`an_anagrafiche`.*', + '`an_nazioni_lang`.`name` AS nazione', ]; $joins[] = [ - 'an_nazioni', - 'an_anagrafiche.id_nazione', - 'an_nazioni.id', + '`an_nazioni_lang`', + '`an_anagrafiche`.`id_nazione`', + '`an_nazioni_lang`.`name`', ]; - $where[] = ['an_anagrafiche.deleted_at', '=', null]; + $where[] = ['`an_anagrafiche`.`deleted_at`', '=', null]; $order['an_anagrafiche.ragione_sociale'] = 'ASC'; @@ -51,18 +51,24 @@ class Anagrafiche extends Resource implements RetrieveInterface, CreateInterface $type = 'Cliente'; $joins[] = [ - 'an_tipianagrafiche_anagrafiche', - 'an_anagrafiche.idanagrafica', - 'an_tipianagrafiche_anagrafiche.idanagrafica', + '`an_tipianagrafiche_anagrafiche`', + '`an_anagrafiche`.`idanagrafica`', + '`an_tipianagrafiche_anagrafiche`.`idanagrafica`', ]; $joins[] = [ - 'an_tipianagrafiche', - 'an_tipianagrafiche_anagrafiche.idtipoanagrafica', - 'an_tipianagrafiche.idtipoanagrafica', + '`an_tipianagrafiche`', + '`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica`', + '`an_tipianagrafiche`.`id`', ]; - $where[] = ['an_tipianagrafiche.descrizione', '=', $type]; + $joins[] = [ + '`an_tipianagrafiche_lang`', + '`an_tipianagrafiche_lang`.`id_record`', + '`an_tipianagrafiche`.`id`', + ]; + + $where[] = ['`an_tipianagrafiche_lang`.`name`', '=', $type]; } return [ diff --git a/modules/anagrafiche/src/Anagrafica.php b/modules/anagrafiche/src/Anagrafica.php index 3c6ea2a9d..4d2b782b2 100755 --- a/modules/anagrafiche/src/Anagrafica.php +++ b/modules/anagrafiche/src/Anagrafica.php @@ -22,6 +22,7 @@ namespace Modules\Anagrafiche; use Common\SimpleModelTrait; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; +use Modules\Anagrafiche\Tipo as TipoAnagrafica; use Modules\Contratti\Contratto; use Modules\DDT\DDT; use Modules\Fatture\Fattura; @@ -88,10 +89,10 @@ class Anagrafica extends Model public static function fromTipo($type) { - $tipologia = Tipo::where('descrizione', $type)->first(); + $tipologia = TipoAnagrafica::where('name', $type)->first(); $anagrafiche = self::whereHas('tipi', function ($query) use ($tipologia) { - $query->where('an_tipianagrafiche.idtipoanagrafica', '=', $tipologia->id); + $query->where('`an_tipianagrafiche`.`id`', '=', $tipologia->id); }); return $anagrafiche; @@ -155,7 +156,7 @@ class Anagrafica extends Model public function setTipologieAttribute(array $tipologie) { if ($this->isAzienda()) { - $tipologie[] = Tipo::where('descrizione', 'Azienda')->first()->id; + $tipologie[] = (new TipoAnagrafica())->getByName('Azienda')->id_record; } $tipologie = array_clean($tipologie); @@ -167,7 +168,7 @@ class Anagrafica extends Model $diff = $actual->diff($previous); foreach ($diff as $tipo) { - $method = 'fix'.$tipo->descrizione; + $method = 'fix'.$tipo->name; if (method_exists($this, $method)) { self::$method($this); } @@ -185,15 +186,16 @@ class Anagrafica extends Model } /** - * Controlla se l'anagrafica è di tipo 'Azienda'. + * Controlla il tipo di anagrafica. * * @return bool */ public function isTipo($type) { return $this->tipi()->get()->search(function ($item, $key) use ($type) { - return $item->descrizione == $type; + return (TipoAnagrafica::find($item->id))->name == $type; }) !== false; + } public function delete() @@ -279,7 +281,7 @@ class Anagrafica extends Model public function tipi() { - return $this->belongsToMany(Tipo::class, 'an_tipianagrafiche_anagrafiche', 'idanagrafica', 'idtipoanagrafica'); + return $this->belongsToMany(TipoAnagrafica::class, 'an_tipianagrafiche_anagrafiche', 'idanagrafica', 'idtipoanagrafica'); } public function sedi() diff --git a/modules/anagrafiche/src/Export/CSV.php b/modules/anagrafiche/src/Export/CSV.php index 1f95cb15a..fe3b1e8eb 100644 --- a/modules/anagrafiche/src/Export/CSV.php +++ b/modules/anagrafiche/src/Export/CSV.php @@ -126,7 +126,7 @@ class CSV extends CSVExporter 'label' => 'ID Pagamento', ], [ - 'field' => 'idtipoanagrafica', + 'field' => 'id', 'label' => 'Tipo', ], [ diff --git a/modules/anagrafiche/src/Import/CSV.php b/modules/anagrafiche/src/Import/CSV.php index a77f63896..e72959d78 100644 --- a/modules/anagrafiche/src/Import/CSV.php +++ b/modules/anagrafiche/src/Import/CSV.php @@ -21,6 +21,7 @@ namespace Modules\Anagrafiche\Import; use Importer\CSVImporter; use Modules\Anagrafiche\Anagrafica; +use Modules\Anagrafiche\Nazione; /** * Struttura per la gestione delle operazioni di importazione (da CSV) delle Anagrafiche. @@ -251,15 +252,18 @@ class CSV extends CSVImporter $tipi_selezionati = explode(',', $record['idtipoanagrafica']); foreach ($tipi_selezionati as $tipo) { - $tipo_anagrafica = $database->fetchOne('SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE LOWER(descrizione) = LOWER('.prepare($tipo).') OR idtipoanagrafica = '.prepare($tipo))['idtipoanagrafica']; + $tipo_anagrafica = $database->fetchOne('SELECT `id` FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE LOWER(`name`) = LOWER('.prepare($tipo).') OR `idtipoanagrafica` = '.prepare($tipo))['idtipoanagrafica']; // Creo il tipo anagrafica se non esiste if (empty($tipo_anagrafica)) { - $database->insert('an_tipianagrafiche', [ - 'descrizione' => $tipo, - ])['idtipoanagrafica']; + $id_tipoanagrafica = database()->query('INSERT INTO `an_tipianagrafiche` (`id`, `default`) VALUES (NULL, `1`)'); + $database->insert('an_tipianagrafiche_lang', [ + 'id_lang' => setting('Lingua'), + 'id_record' => $id_tipoanagrafica, + 'name' => $tipo_anagrafica, + ])['id']; - $tipo_anagrafica = $database->fetchOne('SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE lower(descrizione) = LOWER('.prepare($tipo).') OR idtipoanagrafica = '.prepare($tipo))['idtipoanagrafica']; + $tipo_anagrafica = $database->fetchOne('SELECT `an_tipianagrafiche`.`id` FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE lower(`name`) = LOWER('.prepare($tipo).') OR `idtipoanagrafica` = '.prepare($tipo))['idtipoanagrafica']; } $tipologie[] = $tipo_anagrafica; @@ -275,7 +279,7 @@ class CSV extends CSVImporter // Fix per campi con contenuti derivati da query implicite if (!empty($record['id_nazione'])) { - $record['id_nazione'] = $database->fetchOne('SELECT id FROM an_nazioni WHERE LOWER(nome) = LOWER('.prepare($record['id_nazione']).') OR LOWER(iso2) = LOWER('.prepare($record['id_nazione']).')')['id']; + $record['id_nazione'] = (new Nazione())->getByName($record['id_nazione'])->id_record; } else { unset($record['id_nazione']); } @@ -284,11 +288,14 @@ class CSV extends CSVImporter $id_settore = ''; if (!empty($record['id_settore'])) { $settore = $record['id_settore']; - $id_settore = $database->fetchOne('SELECT id FROM an_settori WHERE LOWER(descrizione) = LOWER('.prepare($settore).')')['id']; + $id_settore = $database->fetchOne('SELECT `an_settori`.`id` FROM `an_settori` LEFT JOIN (`an_settori_lang` ON`an_settori`.`id` = `an_settori_lang`.`id_record` AND `an_settori_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE LOWER(`name`) = LOWER('.prepare($settore).')')['id']; if (empty($id_settore)) { - $id_settore = $database->insert('an_settori', [ - 'descrizione' => $settore, + $id_settore = database()->query('INSERT INTO `an_settori` (`id`, `created_at`, `updated_at`) VALUES (NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)'); + $database->insert('an_settori_lang', [ + 'id_lang' => setting('Lingua'), + 'id_record' => $id_settore, + 'name' => $settore, ])['id']; } } diff --git a/modules/anagrafiche/src/Nazione.php b/modules/anagrafiche/src/Nazione.php index 117ae9a5f..eabf96156 100755 --- a/modules/anagrafiche/src/Nazione.php +++ b/modules/anagrafiche/src/Nazione.php @@ -32,4 +32,34 @@ class Nazione extends Model { return $this->hasMany(Anagrafica::class, 'id_nazione'); } + + /** + * Ritorna l'attributo name della nazione. + * + * @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 della nazione 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/anagrafiche/src/Tipo.php b/modules/anagrafiche/src/Tipo.php index c1597afd6..0be3f2839 100755 --- a/modules/anagrafiche/src/Tipo.php +++ b/modules/anagrafiche/src/Tipo.php @@ -27,28 +27,39 @@ class Tipo extends Model use SimpleModelTrait; protected $table = 'an_tipianagrafiche'; - protected $primaryKey = 'idtipoanagrafica'; - - protected $appends = [ - 'id', - ]; - - protected $hidden = [ - 'idtipoanagrafica', - ]; - - /** - * Restituisce l'identificativo. - * - * @return int - */ - public function getIdAttribute() - { - return $this->idtipoanagrafica; - } public function anagrafiche() { - return $this->hasMany(Anagrafica::class, 'an_tipianagrafiche_anagrafiche', 'idtipoanagrafica', 'idanagrafica'); + return $this->hasMany(Anagrafica::class, 'idtipoanagrafica'); + } + + /** + * Ritorna l'attributo name del tipo anagrafica. + * + * @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 tipo di anagrafica 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/articoli/src/Articolo.php b/modules/articoli/src/Articolo.php index 1897677bb..1e481e570 100755 --- a/modules/articoli/src/Articolo.php +++ b/modules/articoli/src/Articolo.php @@ -41,7 +41,7 @@ class Articolo extends Model protected $table = 'mg_articoli'; - public static function build($codice, $nome, Categoria $categoria = null, Categoria $sottocategoria = null) + public static function build($codice, $nome, ?Categoria $categoria = null, ?Categoria $sottocategoria = null) { $model = new static(); diff --git a/modules/articoli/src/Import/CSV.php b/modules/articoli/src/Import/CSV.php index 7b1c1b712..6d7d82285 100644 --- a/modules/articoli/src/Import/CSV.php +++ b/modules/articoli/src/Import/CSV.php @@ -466,7 +466,7 @@ class CSV extends CSVImporter if ($dettagli['dir']) { $tipo = Tipo::where('descrizione', $dettagli['dir'])->first(); - $tipi = $anagrafica->tipi->pluck('idtipoanagrafica')->toArray(); + $tipi = $anagrafica->tipi->pluck('id')->toArray(); $tipi[] = $tipo->id; diff --git a/modules/automezzi/add_tecnico.php b/modules/automezzi/add_tecnico.php index 77e0fa229..6158fe6d8 100644 --- a/modules/automezzi/add_tecnico.php +++ b/modules/automezzi/add_tecnico.php @@ -16,7 +16,7 @@ echo ' // Tecnico echo '
- {[ "type": "select", "label": "'.tr('Tecnico').'", "name": "idtecnico", "required": 1, "values": "query=SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale AS descrizione FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE (descrizione=\'Tecnico\') AND deleted_at IS NULL ORDER BY ragione_sociale", "value": "'.$idtecnico.'" ]} + {[ "type": "select", "label": "'.tr('Tecnico').'", "name": "idtecnico", "required": 1, "values": "query=SELECT `an_anagrafiche`.`idanagrafica` AS id, `ragione_sociale` AS descrizione FROM `an_anagrafiche` INNER JOIN (`an_tipianagrafiche_anagrafiche` INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche`.`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` WHERE (`name`=\'Tecnico\') AND `deleted_at` IS NULL ORDER BY `ragione_sociale`", "value": "'.$idtecnico.'" ]}
'; // Data di partenza diff --git a/modules/dashboard/edit.php b/modules/dashboard/edit.php index 344364a46..489a44cd4 100755 --- a/modules/dashboard/edit.php +++ b/modules/dashboard/edit.php @@ -24,21 +24,27 @@ include_once __DIR__.'/../../core.php'; // Individuazione dati selezionabili // Stati interventi -$stati_intervento = $dbo->fetchArray('SELECT idstatointervento AS id, descrizione, colore FROM in_statiintervento WHERE deleted_at IS NULL ORDER BY descrizione ASC'); +$stati_intervento = $dbo->fetchArray('SELECT `idstatointervento` AS id, `descrizione`, `colore` FROM `in_statiintervento` WHERE `deleted_at` IS NULL ORDER BY `descrizione` ASC'); // Tipi intervento -$tipi_intervento = $dbo->fetchArray('SELECT idtipointervento AS id, descrizione FROM in_tipiintervento WHERE deleted_at IS NULL ORDER BY descrizione ASC'); +$tipi_intervento = $dbo->fetchArray('SELECT `idtipointervento` AS id, `descrizione` FROM `in_tipiintervento` WHERE `deleted_at` IS NULL ORDER BY `descrizione` ASC'); // Tecnici disponibili -$tecnici_disponibili = $dbo->fetchArray("SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale, colore FROM an_anagrafiche - INNER JOIN - an_tipianagrafiche_anagrafiche ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica - INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica - LEFT OUTER JOIN in_interventi_tecnici ON in_interventi_tecnici.idtecnico = an_anagrafiche.idanagrafica - INNER JOIN in_interventi ON in_interventi_tecnici.idintervento=in_interventi.id -WHERE an_anagrafiche.deleted_at IS NULL AND an_tipianagrafiche.descrizione='Tecnico' ".Modules::getAdditionalsQuery('Interventi', null, false).' -GROUP BY an_anagrafiche.idanagrafica -ORDER BY ragione_sociale ASC'); +$tecnici_disponibili = $dbo->fetchArray('SELECT + `an_anagrafiche`.`idanagrafica` AS id, `ragione_sociale`, `colore` +FROM + `an_anagrafiche` + INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` + 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')).") + LEFT JOIN `in_interventi_tecnici` ON `in_interventi_tecnici`.`idtecnico` = `an_anagrafiche`.`idanagrafica` + INNER JOIN `in_interventi` ON `in_interventi_tecnici`.`idintervento`=`in_interventi`.`id` +WHERE + `an_anagrafiche`.`deleted_at` IS NULL AND `an_tipianagrafiche_lang`.`name`='Tecnico' ".Modules::getAdditionalsQuery('Interventi', null, false).' +GROUP BY + `an_anagrafiche`.`idanagrafica` +ORDER BY + `ragione_sociale` ASC'); // Zone $zone = $dbo->fetchArray('(SELECT 0 AS ordine, \'0\' AS id, \'Nessuna zona\' AS descrizione) UNION (SELECT 1 AS ordine, id, descrizione FROM an_zone) ORDER BY ordine, descrizione ASC'); diff --git a/modules/fatture/actions.php b/modules/fatture/actions.php index 1d93120da..a816fd5e6 100755 --- a/modules/fatture/actions.php +++ b/modules/fatture/actions.php @@ -917,7 +917,7 @@ switch ($op) { // Aggiunta tipologia cliente se necessario if (!$anagrafica->isTipo('Cliente')) { $tipo_cliente = TipoAnagrafica::where('descrizione', 'Cliente')->first(); - $tipi = $anagrafica->tipi->pluck('idtipoanagrafica')->toArray(); + $tipi = $anagrafica->tipi->pluck('id')->toArray(); $tipi[] = $tipo_cliente->id; $anagrafica->tipologie = $tipi; @@ -1045,7 +1045,7 @@ switch ($op) { // Aggiunta tipologia cliente se necessario if (!$azienda->isTipo('Cliente')) { $tipo_cliente = TipoAnagrafica::where('descrizione', 'Cliente')->first(); - $tipi = $azienda->tipi->pluck('idtipoanagrafica')->toArray(); + $tipi = $azienda->tipi->pluck('id')->toArray(); $tipi[] = $tipo_cliente->id; $azienda->tipologie = $tipi; diff --git a/modules/fatture/controller_before.php b/modules/fatture/controller_before.php index ace9fdf31..f4c5f24a0 100644 --- a/modules/fatture/controller_before.php +++ b/modules/fatture/controller_before.php @@ -69,7 +69,7 @@ if ($module->name == 'Fatture di vendita' && $services_enable) { $is_estera = false; if (setting('Rimuovi avviso fatture estere')) { - $is_estera = $database->fetchOne('SELECT idanagrafica FROM an_anagrafiche INNER JOIN an_nazioni ON an_anagrafiche.id_nazione = an_nazioni.id WHERE an_nazioni.nome != "Italia" AND an_anagrafiche.idanagrafica = '.prepare($documento->idanagrafica)); + $is_estera = $database->fetchOne('SELECT `idanagrafica` FROM `an_anagrafiche` INNER JOIN `an_nazioni` ON `an_anagrafiche`.`id_nazione` = `an_nazioni`.`id` LEFT JOIN `an_nazioni_lang` ON (`an_nazioni`.`id` = `an_nazioni_lang`.`id_record` AND `an_nazioni_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `an_nazioni_lang`.`name` != "Italia" AND `an_anagrafiche`.`idanagrafica` = '.prepare($documento->idanagrafica)); } if ($documento->data <= $data_limite_invio && !$is_estera) { diff --git a/modules/fatture/src/Fattura.php b/modules/fatture/src/Fattura.php index 913294a78..44caa6600 100755 --- a/modules/fatture/src/Fattura.php +++ b/modules/fatture/src/Fattura.php @@ -699,7 +699,7 @@ class Fattura extends Document return $result; } - public function replicate(array $except = null) + public function replicate(?array $except = null) { $new = parent::replicate($except); $now = Carbon::now(); diff --git a/modules/interventi/src/Import/CSV.php b/modules/interventi/src/Import/CSV.php index 34affbc2a..592e22c9c 100644 --- a/modules/interventi/src/Import/CSV.php +++ b/modules/interventi/src/Import/CSV.php @@ -174,7 +174,7 @@ 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'])); + $tipo = $database->fetchOne('SELECT `idtipoanagrafica` FROM `an_tipianagrafiche_anagrafiche` WHERE `idanagrafica` = '.prepare($anagrafica_t['idanagrafica'])); $tecnico = TipoAnagrafica::where('descrizione', 'Tecnico')->first(); if ($tipo = $tecnico['idtipoanagrafica']) { diff --git a/modules/newsletter/ajax/select.php b/modules/newsletter/ajax/select.php index 0a281c969..84ae4f685 100755 --- a/modules/newsletter/ajax/select.php +++ b/modules/newsletter/ajax/select.php @@ -35,14 +35,18 @@ switch ($resource) { $destinatari = collect(); // Gestione anagrafiche come destinatari - $query = "SELECT CONCAT('anagrafica_', an_anagrafiche.idanagrafica) AS id, - CONCAT(an_anagrafiche.ragione_sociale, IF(an_anagrafiche.citta != '' OR an_anagrafiche.provincia != '', CONCAT(' (', an_anagrafiche.citta, IF(an_anagrafiche.provincia != '', an_anagrafiche.provincia, ''), ')'), ''), ' [', email, ']') AS text, - `an_tipianagrafiche`.`descrizione` AS optgroup - FROM an_anagrafiche - INNER JOIN an_tipianagrafiche_anagrafiche ON an_anagrafiche.idanagrafica = an_tipianagrafiche_anagrafiche.idanagrafica - INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica - WHERE an_anagrafiche.deleted_at IS NULL AND an_anagrafiche.enable_newsletter = 1 AND 1=1 - ORDER BY `optgroup` ASC, ragione_sociale ASC"; + $query = "SELECT CONCAT('anagrafica_', `an_anagrafiche`.`idanagrafica`) AS id, + CONCAT(`an_anagrafiche`.`ragione_sociale`, IF(`an_anagrafiche`.`citta` != '' OR `an_anagrafiche`.`provincia` != '', CONCAT(' (', `an_anagrafiche`.`citta`, IF(`an_anagrafiche`.`provincia` != '', `an_anagrafiche`.`provincia`, ''), ')'), ''), ' [', `email`, ']') AS text, + `an_tipianagrafiche_lang`.`name` AS optgroup + FROM + `an_anagrafiche` + INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `an_tipianagrafiche_anagrafiche`.`idanagrafica` + INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` = `an_tipianagrafiche`.`id` + LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche_lang`.`id_record` = `an_tipianagrafiche`.id` AND `an_tipianagrafiche_lang`.`id_lang` = ".prepare(setting('Lingua')).') + WHERE + `an_anagrafiche`.`deleted_at` IS NULL AND `an_anagrafiche`.`enable_newsletter` = 1 AND 1=1 + ORDER BY + `optgroup` ASC, `ragione_sociale` ASC'; $query = str_replace('1=1', !empty($where) ? replace($where, [ '|nome|' => 'ragione_sociale', @@ -52,33 +56,39 @@ switch ($resource) { $destinatari = $destinatari->concat($anagrafiche); // Gestione sedi come destinatari - $query = "SELECT CONCAT('sede_', an_sedi.id) AS id, - CONCAT(an_anagrafiche.ragione_sociale, ' (', an_sedi.nomesede, IF(an_sedi.citta != '' OR an_sedi.provincia != '', CONCAT(' :', an_sedi.citta, IF(an_sedi.provincia != '', an_sedi.provincia, ''), ''), ''), ')', ' [', an_sedi.email, ']') AS text, + $query = "SELECT CONCAT('sede_', `an_sedi`.`id`) AS id, + CONCAT(`an_anagrafiche`.`ragione_sociale`, ' (', `an_sedi`.`nomesede`, IF(`an_sedi`.`citta` != '' OR `an_sedi`.`provincia` != '', CONCAT(' :', `an_sedi`.`citta`, IF(`an_sedi`.`provincia` != '', `an_sedi`.`provincia`, ''), ''), ''), ')', ' [', `an_sedi`.`email`, ']') AS text, 'Sedi' AS optgroup - FROM an_sedi - INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = an_sedi.idanagrafica - WHERE an_anagrafiche.deleted_at IS NULL AND an_anagrafiche.enable_newsletter = 1 AND 1=1 - ORDER BY `optgroup` ASC, ragione_sociale ASC"; + FROM + `an_sedi` + INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `an_sedi`.`idanagrafica` + WHERE + `an_anagrafiche`.`deleted_at` IS NULL AND `an_anagrafiche`.`enable_newsletter` = 1 AND 1=1 + ORDER BY + `optgroup` ASC, `ragione_sociale` ASC"; $query = str_replace('1=1', !empty($where) ? replace($where, [ - '|nome|' => 'nomesede LIKE '.prepare('%'.$search.'%').' OR ragione_sociale', - '|table|' => 'an_sedi', + '|nome|' => '`nomesede` LIKE '.prepare('%'.$search.'%').' OR `ragione_sociale`', + '|table|' => '`an_sedi`', ]) : '', $query); $sedi = $database->fetchArray($query); $destinatari = $destinatari->concat($sedi); // Gestione referenti come destinatari - $query = "SELECT CONCAT('referente_', an_referenti.id) AS id, - CONCAT(an_anagrafiche.ragione_sociale, ' (', an_referenti.nome, ') [', an_referenti.email, ']') AS text, + $query = "SELECT CONCAT('referente_', `an_referenti`.`id`) AS id, + CONCAT(`an_anagrafiche`.`ragione_sociale`, ' (', `an_referenti`.`nome`, ') [', `an_referenti`.`email`, ']') AS text, 'Referenti' AS optgroup - FROM an_referenti - INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = an_referenti.idanagrafica - WHERE an_anagrafiche.deleted_at IS NULL AND an_anagrafiche.enable_newsletter = 1 AND 1=1 - ORDER BY `optgroup` ASC, ragione_sociale ASC"; + FROM + `an_referenti` + INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `an_referenti`.`idanagrafica` + WHERE + `an_anagrafiche`.`deleted_at` IS NULL AND `an_anagrafiche`.`enable_newsletter` = 1 AND 1=1 + ORDER BY + `optgroup` ASC, `ragione_sociale` ASC"; $query = str_replace('1=1', !empty($where) ? replace($where, [ - '|nome|' => 'an_referenti.nome LIKE '.prepare('%'.$search.'%').' OR ragione_sociale', - '|table|' => 'an_anagrafiche', + '|nome|' => '`an_referenti`.`nome` LIKE '.prepare('%'.$search.'%').' OR ragione_sociale', + '|table|' => '`an_anagrafiche`', ]) : '', $query); $referenti = $database->fetchArray($query); $destinatari = $destinatari->concat($referenti); @@ -88,18 +98,18 @@ switch ($resource) { break; case 'liste_newsletter': - $query = "SELECT id, CONCAT(name, ' (', (SELECT COUNT(*) FROM em_list_receiver WHERE em_lists.id = em_list_receiver.id_list), ' destinatari)') AS descrizione FROM em_lists |where| ORDER BY `name` ASC"; + $query = "SELECT `id`, CONCAT(`name`, ' (', (SELECT COUNT(*) FROM `em_list_receiver` WHERE `em_lists`.`id` = `em_list_receiver`.`id_list`), ' `destinatari`)') AS descrizione FROM `em_lists` |where| ORDER BY `name` ASC"; foreach ($elements as $element) { - $filter[] = 'id='.prepare($element); + $filter[] = '`id`='.prepare($element); } if (empty($filter)) { - $where[] = 'deleted_at IS NULL'; + $where[] = '`deleted_at` IS NULL'; } if (!empty($search)) { - $search_fields[] = 'name LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`name` LIKE '.prepare('%'.$search.'%'); } // Aggiunta filtri di ricerca diff --git a/modules/newsletter/ajax/table.php b/modules/newsletter/ajax/table.php index 7856e7d74..10950d844 100644 --- a/modules/newsletter/ajax/table.php +++ b/modules/newsletter/ajax/table.php @@ -71,7 +71,7 @@ foreach ($destinatari_filtrati as $destinatario) { $descrizione .= ' ['.$origine->nome.']'; } - $tipo_anagrafica = $database->fetchOne('SELECT GROUP_CONCAT(an_tipianagrafiche.descrizione) AS descrizione FROM an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica WHERE an_tipianagrafiche_anagrafiche.idanagrafica='.prepare($anagrafica->id))['descrizione']; + $tipo_anagrafica = $database->fetchOne('SELECT GROUP_CONCAT(`an_tipianagrafiche_lang`.`name`) AS descrizione FROM `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')).') WHERE `an_tipianagrafiche_anagrafiche`.`idanagrafica`='.prepare($anagrafica->id))['descrizione']; $riga = [ Modules::link('Anagrafiche', $anagrafica->id, $descrizione), diff --git a/modules/preventivi/plugins/preventivi.consuntivo.php b/modules/preventivi/plugins/preventivi.consuntivo.php index 980c58d53..1247210fb 100755 --- a/modules/preventivi/plugins/preventivi.consuntivo.php +++ b/modules/preventivi/plugins/preventivi.consuntivo.php @@ -160,8 +160,10 @@ if (!empty($interventi)) { '; // Raggruppamento per articolo con lo stesso prezzo - $ricavo = ($articolo->imponibile - $articolo->sconto) / $articolo->qta; - $costo = $articolo->spesa / $articolo->qta; + if ($articolo->qta) { + $ricavo = ($articolo->imponibile - $articolo->sconto) / $articolo->qta; + $costo = $articolo->spesa / $articolo->qta; + } $descrizione = $articolo->articolo->codice.' - '.$articolo->articolo->descrizione; $materiali_art[$descrizione][$ricavo][$costo]['id'] = $articolo->articolo->id; diff --git a/modules/primanota/src/Mastrino.php b/modules/primanota/src/Mastrino.php index 75ca2cc34..001c43544 100755 --- a/modules/primanota/src/Mastrino.php +++ b/modules/primanota/src/Mastrino.php @@ -185,7 +185,7 @@ class Mastrino extends Model /** * Funzione dedicata alla distribuzione del totale pagato del movimento nelle relative scadenze associate. */ - protected function correggiScadenza(Movimento $movimento, Scadenza $scadenza = null, Fattura $documento = null) + protected function correggiScadenza(Movimento $movimento, ?Scadenza $scadenza = null, ?Fattura $documento = null) { $is_nota = false; $documento = $documento ?: $scadenza->documento; diff --git a/modules/primanota/src/Movimento.php b/modules/primanota/src/Movimento.php index daa86ec52..a666d8782 100755 --- a/modules/primanota/src/Movimento.php +++ b/modules/primanota/src/Movimento.php @@ -36,7 +36,7 @@ class Movimento extends Model 'dare', ]; - public static function build(Mastrino $mastrino, $id_conto, Fattura $documento = null, Scadenza $scadenza = null) + public static function build(Mastrino $mastrino, $id_conto, ?Fattura $documento = null, ?Scadenza $scadenza = null) { $model = new static(); diff --git a/modules/provenienze/actions.php b/modules/provenienze/actions.php index 3dc98286f..105cfef19 100644 --- a/modules/provenienze/actions.php +++ b/modules/provenienze/actions.php @@ -25,8 +25,9 @@ switch (filter('op')) { $colore = filter('colore'); if (isset($descrizione)) { - if ($dbo->fetchNum('SELECT * FROM `an_provenienze` WHERE `descrizione`='.prepare($descrizione).' AND `id`!='.prepare($id_record)) == 0) { - $dbo->query('UPDATE `an_provenienze` SET `descrizione`='.prepare($descrizione).', `colore`='.prepare($colore).' WHERE `id`='.prepare($id_record)); + if ($dbo->fetchNum('SELECT * FROM `an_provenienze` LEFT JOIN `an_provenienze_lang` ON (`an_provenienze`.`id` = `an_provenienze_lang`.`id_record` AND `an_provenienze_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `name`='.prepare($descrizione).' AND `an_provenienze`.`id`!='.prepare($id_record)) == 0) { + $dbo->query('UPDATE `an_provenienze_lang` SET `name`='.prepare($descrizione).' WHERE `id_record` = '.prepare($id_record)); + $dbo->query('UPDATE `an_provenienze` SET `colore`='.prepare($colore).' WHERE `id`='.prepare($id_record)); flash()->info(tr('Salvataggio completato.')); } else { flash()->error(tr("E' già presente una provenienza _NAME_.", [ @@ -44,10 +45,10 @@ switch (filter('op')) { $colore = filter('colore'); if (isset($descrizione)) { - if ($dbo->fetchNum('SELECT * FROM `an_provenienze` WHERE `descrizione`='.prepare($descrizione)) == 0) { - $dbo->query('INSERT INTO `an_provenienze` (`descrizione`, `colore`) VALUES ('.prepare($descrizione).', '.prepare($colore).')'); - + if ($dbo->fetchNum('SELECT * FROM `an_provenienze` LEFT JOIN `an_provenienze_lang` ON (`an_provenienze`.`id` = `an_provenienze_lang`.`id_record` AND `an_provenienze_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `name`='.prepare($descrizione)) == 0) { + $dbo->query('INSERT INTO `an_provenienze` (`colore`) VALUES ('.prepare($colore).')'); $id_record = $dbo->lastInsertedID(); + $dbo->query('INSERT INTO `an_provenienze_lang` (`name`, `id_record`, `id_lang`) VALUES ('.prepare($descrizione).', '.prepare($id_record).', '.prepare(setting('Lingua')).')'); if (isAjaxRequest()) { echo json_encode(['id' => $id_record, 'text' => $descrizione]); diff --git a/modules/provenienze/edit.php b/modules/provenienze/edit.php index 758fe450f..ad6398918 100644 --- a/modules/provenienze/edit.php +++ b/modules/provenienze/edit.php @@ -32,7 +32,7 @@ include_once __DIR__.'/../../core.php';
- {[ "type": "text", "label": "", "name": "descrizione", "required": 1, "value": "$descrizione$" ]} + {[ "type": "text", "label": "", "name": "descrizione", "required": 1, "value": "$name$" ]}
diff --git a/modules/provenienze/init.php b/modules/provenienze/init.php index 8fcd413c4..698f293b6 100644 --- a/modules/provenienze/init.php +++ b/modules/provenienze/init.php @@ -20,5 +20,5 @@ include_once __DIR__.'/../../core.php'; if (isset($id_record)) { - $record = $dbo->fetchOne('SELECT * FROM `an_provenienze` WHERE id='.prepare($id_record)); + $record = $dbo->fetchOne('SELECT * FROM `an_provenienze` LEFT JOIN `an_provenienze_lang` ON (`an_provenienze`.`id`=`an_provenienze_lang`.`id_record` AND `an_provenienze_lang`.`id_lang`='.setting('Lingua').') WHERE `an_provenienze`.`id`='.prepare($id_record)); } diff --git a/modules/relazioni_anagrafiche/actions.php b/modules/relazioni_anagrafiche/actions.php index 027ceb4e1..4f6bade6b 100755 --- a/modules/relazioni_anagrafiche/actions.php +++ b/modules/relazioni_anagrafiche/actions.php @@ -26,8 +26,9 @@ switch (filter('op')) { $is_bloccata = filter('is_bloccata'); if (isset($descrizione)) { - if ($dbo->fetchNum('SELECT * FROM `an_relazioni` WHERE `descrizione`='.prepare($descrizione).' AND `id`!='.prepare($id_record)) == 0) { - $dbo->query('UPDATE `an_relazioni` SET `descrizione`='.prepare($descrizione).', `colore`='.prepare($colore).', `is_bloccata`='.prepare($is_bloccata).' WHERE `id`='.prepare($id_record)); + if ($dbo->fetchNum('SELECT * FROM `an_relazioni` LEFT JOIN (`an_relazioni_lang` ON `an_relazioni`.`id`=`an_relazioni_lang`.`id_record` AND `an_relazioni_lang`.`id_lang`='.setting('Lingua').') WHERE `an_relazioni_lang`.`name`='.prepare($descrizione).' AND `an_relazioni`.`id`!='.prepare($id_record)) == 0) { + $dbo->query('UPDATE `an_relazioni` SET `colore`='.prepare($colore).', `is_bloccata`='.prepare($is_bloccata).' WHERE `id`='.prepare($id_record)); + $dbo->query('UPDATE `an_relazioni_lang` SET `name`='.prepare($descrizione).' WHERE `id_record`='.prepare($id_record)); flash()->info(tr('Salvataggio completato.')); } else { flash()->error(tr("E' già presente una relazione '_NAME_'.", [ @@ -46,10 +47,10 @@ switch (filter('op')) { $is_bloccata = filter('is_bloccata'); if (isset($descrizione)) { - if ($dbo->fetchNum('SELECT * FROM `an_relazioni` WHERE `descrizione`='.prepare($descrizione)) == 0) { - $dbo->query('INSERT INTO `an_relazioni` (`descrizione`, `colore`, `is_bloccata` ) VALUES ('.prepare($descrizione).', '.prepare($colore).', '.prepare($is_bloccata).' )'); - + if ($dbo->fetchNum('SELECT * FROM `an_relazioni` LEFT JOIN (`an_relazioni_lang` ON `an_relazioni`.`id`=`an_relazioni_lang`.`id_record` AND `an_relazioni_lang`.`id_lang`='.setting('Lingua').') WHERE `an_relazioni_lang`.`name`='.prepare($descrizione)) == 0) { + $dbo->query('INSERT INTO `an_relazioni` (`colore`, `is_bloccata`) VALUES ('.prepare($colore).', '.prepare($is_bloccata).' )'); $id_record = $dbo->lastInsertedID(); + $dbo->query('INSERT INTO `an_relazioni_lang` (`name`, `id_record`, `id_lang`) VALUES ('.prepare($descrizione).', '.prepare($id_record).', '.prepare(setting('Lingua')).')'); if (isAjaxRequest()) { echo json_encode(['id' => $id_record, 'text' => $descrizione]); @@ -70,7 +71,7 @@ switch (filter('op')) { break; case 'delete': - $dbo->query('UPDATE `an_relazioni` SET deleted_at=NOW() WHERE `id`='.prepare($id_record)); + $dbo->query('UPDATE `an_relazioni` SET `deleted_at`=NOW() WHERE `id`='.prepare($id_record)); flash()->info(tr('Relazione _NAME_ eliminata con successo!', [ '_NAME_' => $descrizione, ])); diff --git a/modules/relazioni_anagrafiche/edit.php b/modules/relazioni_anagrafiche/edit.php index 984f09223..53394bc53 100755 --- a/modules/relazioni_anagrafiche/edit.php +++ b/modules/relazioni_anagrafiche/edit.php @@ -32,7 +32,7 @@ include_once __DIR__.'/../../core.php';
- {[ "type": "text", "label": "", "name": "descrizione", "required": 1, "value": "$descrizione$" ]} + {[ "type": "text", "label": "", "name": "descrizione", "required": 1, "value": "$name$" ]}
diff --git a/modules/relazioni_anagrafiche/init.php b/modules/relazioni_anagrafiche/init.php index 32b524fdf..c11287f7d 100755 --- a/modules/relazioni_anagrafiche/init.php +++ b/modules/relazioni_anagrafiche/init.php @@ -20,5 +20,5 @@ include_once __DIR__.'/../../core.php'; if (isset($id_record)) { - $record = $dbo->fetchOne('SELECT * FROM `an_relazioni` WHERE id='.prepare($id_record)); + $record = $dbo->fetchOne('SELECT * FROM `an_relazioni` LEFT JOIN `an_relazioni_lang` ON (`an_relazioni`.`id`=`an_relazioni_lang`.`id_record` AND `an_relazioni_lang`.`id_lang`='.setting('Lingua').') WHERE `an_relazioni`.`id`='.prepare($id_record)); } diff --git a/modules/scadenzario/actions.php b/modules/scadenzario/actions.php index ad557a48b..66f0dcb0b 100755 --- a/modules/scadenzario/actions.php +++ b/modules/scadenzario/actions.php @@ -42,7 +42,7 @@ switch (post('op')) { $tipo = post('tipo'); $descrizione = post('descrizione'); $iddocumento = post('iddocumento') ?: 0; - if (!empty($iddocumento)){ + if (!empty($iddocumento)) { $scadenze = database()->table('co_scadenziario')->where('iddocumento', '=', $iddocumento)->orderBy('scadenza')->get(); } $totale_pagato = 0; diff --git a/modules/settori_merceologici/actions.php b/modules/settori_merceologici/actions.php index 2b8922b6c..0ee9741ef 100644 --- a/modules/settori_merceologici/actions.php +++ b/modules/settori_merceologici/actions.php @@ -25,8 +25,8 @@ switch (filter('op')) { $colore = filter('colore'); if (isset($descrizione)) { - if ($dbo->fetchNum('SELECT * FROM `an_settori` WHERE `descrizione`='.prepare($descrizione).' AND `id`!='.prepare($id_record)) == 0) { - $dbo->query('UPDATE `an_settori` SET `descrizione`='.prepare($descrizione).' WHERE `id`='.prepare($id_record)); + if ($dbo->fetchNum('SELECT * FROM `an_settori` LEFT JOIN `an_settori_lang` ON (`an_settori`.`id` = `an_settori_lang`.`id_record` AND `an_settori_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `name`='.prepare($descrizione).' AND `an_settori`.`id`!='.prepare($id_record)) == 0) { + $dbo->query('UPDATE `an_settori_lang` SET `name`='.prepare($descrizione).' WHERE `id_record`='.prepare($id_record)); flash()->info(tr('Salvataggio completato.')); } else { flash()->error(tr("E' già presente il settore merceologico _NAME_.", [ @@ -44,10 +44,10 @@ switch (filter('op')) { $colore = filter('colore'); if (isset($descrizione)) { - if ($dbo->fetchNum('SELECT * FROM `an_settori` WHERE `descrizione`='.prepare($descrizione)) == 0) { - $dbo->query('INSERT INTO `an_settori` (`descrizione`) VALUES ('.prepare($descrizione).')'); - + if ($dbo->fetchNum('SELECT * FROM `an_settori` LEFT JOIN `an_settori_lang` ON (`an_settori`.`id` = `an_settori_lang`.`id_record` AND `an_settori_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `name`='.prepare($descrizione)) == 0) { + $dbo->query('INSERT INTO `an_settori` (`id`, `created_at`, `updated_at`) VALUES (NULL, NOW(), NOW())'); $id_record = $dbo->lastInsertedID(); + $dbo->query('INSERT INTO `an_settori_lang` (`name`, `id_record`, `id_lang`) VALUES ('.prepare($descrizione).', '.prepare($id_record).', '.prepare(setting('Lingua')).')'); if (isAjaxRequest()) { echo json_encode(['id' => $id_record, 'text' => $descrizione]); diff --git a/modules/settori_merceologici/edit.php b/modules/settori_merceologici/edit.php index f308d2adf..5d639cdfd 100644 --- a/modules/settori_merceologici/edit.php +++ b/modules/settori_merceologici/edit.php @@ -32,7 +32,7 @@ include_once __DIR__.'/../../core.php';
- {[ "type": "text", "label": "", "name": "descrizione", "required": 1, "value": "$descrizione$" ]} + {[ "type": "text", "label": "", "name": "descrizione", "required": 1, "value": "$name$" ]}
diff --git a/modules/settori_merceologici/init.php b/modules/settori_merceologici/init.php index 5a7607dec..8ee8b6141 100644 --- a/modules/settori_merceologici/init.php +++ b/modules/settori_merceologici/init.php @@ -20,5 +20,5 @@ include_once __DIR__.'/../../core.php'; if (isset($id_record)) { - $record = $dbo->fetchOne('SELECT * FROM `an_settori` WHERE id='.prepare($id_record)); + $record = $dbo->fetchOne('SELECT * FROM `an_settori` LEFT JOIN `an_settori_lang` ON (`an_settori`.`id`=`an_settori_lang`.`id_record` AND `an_settori_lang`.`id_lang`='.setting('Lingua').') WHERE `an_settori`.`id`='.prepare($id_record)); } diff --git a/modules/statistiche/edit.php b/modules/statistiche/edit.php index 68deb37fe..7f68147de 100755 --- a/modules/statistiche/edit.php +++ b/modules/statistiche/edit.php @@ -416,20 +416,25 @@ $(document).ready(function() { '; // Interventi per tecnico -$tecnici = $dbo->fetchArray("SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale, colore FROM an_anagrafiche -INNER JOIN -an_tipianagrafiche_anagrafiche ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica -INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica -LEFT OUTER JOIN in_interventi_tecnici ON in_interventi_tecnici.idtecnico = an_anagrafiche.idanagrafica -INNER JOIN in_interventi ON in_interventi_tecnici.idintervento=in_interventi.id -WHERE an_anagrafiche.deleted_at IS NULL AND an_tipianagrafiche.descrizione='Tecnico' -GROUP BY an_anagrafiche.idanagrafica -ORDER BY ragione_sociale ASC"); +$tecnici = $dbo->fetchArray('SELECT `an_anagrafiche`.`idanagrafica` AS id, `ragione_sociale`, `colore` +FROM + `an_anagrafiche` + INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` + INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche`.`id` + LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche_lang`.`id_record` = `an_tipianagrafiche`.`id` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).") + LEFT JOIN `in_interventi_tecnici` ON `in_interventi_tecnici`.`idtecnico` = `an_anagrafiche`.`idanagrafica` + INNER JOIN `in_interventi` ON `in_interventi_tecnici`.`idintervento`=`in_interventi`.`id` +WHERE + `an_anagrafiche`.`deleted_at` IS NULL AND `an_tipianagrafiche_lang`.`name`='Tecnico' +GROUP BY + `an_anagrafiche`.`idanagrafica` +ORDER BY + `ragione_sociale` ASC"); $dataset = ''; -$where = implode(',', (array) json_decode($_SESSION['superselect']['idtipiintervento'])) != '' ? 'in_interventi_tecnici.idtipointervento IN('.implode(',', (array) json_decode($_SESSION['superselect']['idtipiintervento'])).')' : '1=1'; +$where = implode(',', (array) json_decode($_SESSION['superselect']['idtipiintervento'])) != '' ? '`in_interventi_tecnici`.`idtipointervento` IN('.implode(',', (array) json_decode($_SESSION['superselect']['idtipiintervento'])).')' : '1=1'; foreach ($tecnici as $tecnico) { - $sessioni = $dbo->fetchArray('SELECT SUM(in_interventi_tecnici.ore) AS result, CONCAT(CAST(SUM(in_interventi_tecnici.ore) AS char(20)),\' ore\') AS ore_lavorate, YEAR(in_interventi_tecnici.orario_inizio) AS year, MONTH(in_interventi_tecnici.orario_inizio) AS month FROM in_interventi_tecnici INNER JOIN `in_interventi` ON `in_interventi_tecnici`.`idintervento` = `in_interventi`.`id` LEFT JOIN `in_statiintervento` ON `in_interventi`.`idstatointervento`=`in_statiintervento`.`idstatointervento` WHERE in_interventi_tecnici.idtecnico = '.prepare($tecnico['id']).' AND in_interventi_tecnici.orario_inizio BETWEEN '.prepare($start).' AND '.prepare($end).' AND `in_statiintervento`.`is_completato` AND '.$where.' GROUP BY YEAR(in_interventi_tecnici.orario_inizio), MONTH(in_interventi_tecnici.orario_inizio) ORDER BY YEAR(in_interventi_tecnici.orario_inizio) ASC, MONTH(in_interventi_tecnici.orario_inizio) ASC'); + $sessioni = $dbo->fetchArray('SELECT SUM(`in_interventi_tecnici`.`ore`) AS result, CONCAT(CAST(SUM(`in_interventi_tecnici`.`ore`) AS char(20)),\' ore\') AS ore_lavorate, YEAR(`in_interventi_tecnici`.`orario_inizio`) AS year, MONTH(`in_interventi_tecnici`.`orario_inizio`) AS month FROM `in_interventi_tecnici` INNER JOIN ``in_interventi`` ON ``in_interventi_tecnici``.`idintervento` = `in_interventi`.`id` LEFT JOIN `in_statiintervento` ON `in_interventi`.`idstatointervento`=`in_statiintervento`.`idstatointervento` WHERE `in_interventi_tecnici`.`idtecnico` = '.prepare($tecnico['id']).' AND `in_interventi_tecnici`.`orario_inizio` BETWEEN '.prepare($start).' AND '.prepare($end).' AND `in_statiintervento`.`is_completato` AND '.$where.' GROUP BY YEAR(`in_interventi_tecnici`.`orario_inizio`), MONTH(`in_interventi_tecnici`.`orario_inizio`) ORDER BY YEAR(`in_interventi_tecnici`.`orario_inizio`) ASC, MONTH(`in_interventi_tecnici`.`orario_inizio`) ASC'); $sessioni = Stats::monthly($sessioni, $start, $end); @@ -535,23 +540,55 @@ $(document).ready(function() { $dataset = ''; -$nuovi_clienti = $dbo->fetchArray('SELECT COUNT(*) AS result, GROUP_CONCAT(an_anagrafiche.ragione_sociale, "
") AS ragioni_sociali, YEAR(an_anagrafiche.created_at) AS year, MONTH(an_anagrafiche.created_at) AS month FROM an_anagrafiche -INNER JOIN an_tipianagrafiche_anagrafiche ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica -INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica -WHERE an_tipianagrafiche.descrizione = "Cliente" AND deleted_at IS NULL AND an_anagrafiche.created_at BETWEEN '.prepare($start).' AND '.prepare($end).' GROUP BY YEAR(an_anagrafiche.created_at), MONTH(an_anagrafiche.created_at) ORDER BY YEAR(an_anagrafiche.created_at) ASC, MONTH(an_anagrafiche.created_at) ASC'); +$nuovi_clienti = $dbo->fetchArray('SELECT + COUNT(*) AS result, + GROUP_CONCAT(`an_anagrafiche`.`ragione_sociale`, "
") AS ragioni_sociali, + YEAR(`an_anagrafiche`.`created_at`) AS year, + MONTH(`an_anagrafiche`.`created_at`) AS month +FROM + `an_anagrafiche` + INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` + 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')).') +WHERE + `an_tipianagrafiche_lang`.`name` = "Cliente" AND `deleted_at` IS NULL AND `an_anagrafiche`.`created_at` BETWEEN '.prepare($start).' AND '.prepare($end).' GROUP BY YEAR(`an_anagrafiche`.`created_at`), MONTH(`an_anagrafiche`.`created_at`) ORDER BY YEAR(`an_anagrafiche`.`created_at`) ASC, MONTH(`an_anagrafiche`.`created_at`) ASC'); -$nuovi_fornitori = $dbo->fetchArray('SELECT COUNT(*) AS result, GROUP_CONCAT(an_anagrafiche.ragione_sociale, "
") AS ragioni_sociali, YEAR(an_anagrafiche.created_at) AS year, MONTH(an_anagrafiche.created_at) AS month FROM an_anagrafiche -INNER JOIN an_tipianagrafiche_anagrafiche ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica -INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica -WHERE an_tipianagrafiche.descrizione = "Fornitore" AND deleted_at IS NULL AND an_anagrafiche.created_at BETWEEN '.prepare($start).' AND '.prepare($end).' GROUP BY YEAR(an_anagrafiche.created_at), MONTH(an_anagrafiche.created_at) ORDER BY YEAR(an_anagrafiche.created_at) ASC, MONTH(an_anagrafiche.created_at) ASC'); +$nuovi_fornitori = $dbo->fetchArray('SELECT + COUNT(*) AS result, + GROUP_CONCAT(`an_anagrafiche`.`ragione_sociale`, "
") AS ragioni_sociali, + YEAR(`an_anagrafiche`.`created_at`) AS year, + MONTH(`an_anagrafiche`.`created_at`) AS month +FROM + `an_anagrafiche` + INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` + 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')).') +WHERE + `an_tipianagrafiche_lang`.`name` = "Fornitore" AND `deleted_at` IS NULL AND `an_anagrafiche`.`created_at` BETWEEN '.prepare($start).' AND '.prepare($end).' +GROUP BY + YEAR(`an_anagrafiche`.`created_at`), MONTH(`an_anagrafiche`.`created_at`) +ORDER BY + YEAR(`an_anagrafiche`.`created_at`) ASC, MONTH(`an_anagrafiche`.`created_at`) ASC'); // Nuovi clienti per i quali ho emesso almeno una fattura di vendita -$clienti_acquisiti = $dbo->fetchArray('SELECT COUNT(*) AS result, GROUP_CONCAT(an_anagrafiche.ragione_sociale, "
") AS ragioni_sociali, YEAR(an_anagrafiche.created_at) AS year, MONTH(an_anagrafiche.created_at) AS month FROM an_anagrafiche -INNER JOIN co_documenti ON an_anagrafiche.idanagrafica = co_documenti.idanagrafica -INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id -INNER JOIN an_tipianagrafiche_anagrafiche ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica -INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica -WHERE an_tipianagrafiche.descrizione = "Cliente" AND co_tipidocumento.dir = "entrata" AND an_anagrafiche.created_at BETWEEN '.prepare($start).' AND '.prepare($end).' GROUP BY YEAR(an_anagrafiche.created_at), MONTH(an_anagrafiche.created_at) ORDER BY YEAR(an_anagrafiche.created_at) ASC, MONTH(an_anagrafiche.created_at) ASC'); +$clienti_acquisiti = $dbo->fetchArray('SELECT + COUNT(*) AS result, + GROUP_CONCAT(`an_anagrafiche`.`ragione_sociale`, "
") AS ragioni_sociali, + YEAR(`an_anagrafiche`.`created_at`) AS year, + MONTH(`an_anagrafiche`.`created_at`) AS month +FROM + `an_anagrafiche` + INNER JOIN `co_documenti` ON `an_anagrafiche`.`idanagrafica` = `co_documenti`.`idanagrafica` + INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento`=`co_tipidocumento`.`id` + INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` + 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')).') +WHERE + `an_tipianagrafiche_lang`.`name` = "Cliente" AND `co_tipidocumento`.`dir` = "entrata" AND `an_anagrafiche`.`created_at` BETWEEN '.prepare($start).' AND '.prepare($end).' +GROUP BY + YEAR(`an_anagrafiche`.`created_at`), MONTH(`an_anagrafiche`.`created_at`) +ORDER BY + YEAR(`an_anagrafiche`.`created_at`) ASC, MONTH(`an_anagrafiche`.`created_at`) ASC'); // Random color $background = '#'.dechex(rand(256, 16777215)); diff --git a/modules/tipi_anagrafiche/actions.php b/modules/tipi_anagrafiche/actions.php index 4943e2921..159c4cbc1 100755 --- a/modules/tipi_anagrafiche/actions.php +++ b/modules/tipi_anagrafiche/actions.php @@ -28,7 +28,7 @@ switch (post('op')) { // Nome accettato if (!in_array($descrizione, $block)) { - $dbo->query('UPDATE an_tipianagrafiche SET descrizione='.prepare($descrizione).' WHERE idtipoanagrafica='.prepare($idtipoanagrafica)); + $dbo->query('UPDATE `an_tipianagrafiche_lang` SET `name`='.prepare($descrizione).' WHERE `id_record`='.prepare($idtipoanagrafica)); flash()->info(tr('Informazioni salvate correttamente!')); } else { // Nome non consentito @@ -42,22 +42,22 @@ switch (post('op')) { if (!empty($descrizione)) { // Verifico che il nome non sia duplicato - $rs = $dbo->fetchArray('SELECT descrizione FROM an_tipianagrafiche WHERE descrizione='.prepare($descrizione)); + $rs = $dbo->fetchArray('SELECT `name` FROM `an_tipianagrafiche_lang` WHERE `name`='.prepare($descrizione)); if (count($rs) > 0) { flash()->error(tr('Nome già esistente!')); } else { - $query = 'INSERT INTO an_tipianagrafiche (descrizione) VALUES ('.prepare($descrizione).')'; - $dbo->query($query); - + $dbo->query('INSERT INTO `an_tipianagrafiche` (`id`) VALUES (NULL)'); $id_record = $dbo->lastInsertedID(); + $dbo->query('INSERT INTO `an_tipianagrafiche_lang` (`name`, `id_record`, `id_lang`) VALUES ('.prepare($descrizione).'), ('.prepare($id_record).', '.prepare(setting('Lingua')).')'); + flash()->info(tr('Nuovo tipo di anagrafica aggiunto!')); } } break; case 'delete': - $query = 'DELETE FROM an_tipianagrafiche WHERE idtipoanagrafica='.prepare($id_record); + $query = 'DELETE FROM `an_tipianagrafiche` WHERE `id`='.prepare($id_record); $dbo->query($query); flash()->info(tr('Tipo di anagrafica eliminato!')); diff --git a/modules/tipi_anagrafiche/edit.php b/modules/tipi_anagrafiche/edit.php index 4fc6e6974..f530f804d 100755 --- a/modules/tipi_anagrafiche/edit.php +++ b/modules/tipi_anagrafiche/edit.php @@ -51,7 +51,7 @@ if (!empty($record['default'])) {
- {[ "type": "text", "label": "", "name": "descrizione", "required": 1, "value": "$descrizione$", "extra": "" ]} + {[ "type": "text", "label": "", "name": "descrizione", "required": 1, "value": "$name$", "extra": "" ]}
diff --git a/modules/tipi_anagrafiche/init.php b/modules/tipi_anagrafiche/init.php index 01f917333..c9c4a6334 100755 --- a/modules/tipi_anagrafiche/init.php +++ b/modules/tipi_anagrafiche/init.php @@ -20,5 +20,5 @@ include_once __DIR__.'/../../core.php'; if (isset($id_record)) { - $record = $dbo->fetchOne('SELECT * FROM an_tipianagrafiche WHERE idtipoanagrafica='.prepare($id_record)); + $record = $dbo->fetchOne('SELECT * FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id`=`an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang`='.prepare(setting('Lingua')).') WHERE `an_tipianagrafiche`.`id`='.prepare($id_record)); } diff --git a/modules/utenti/ajax/select.php b/modules/utenti/ajax/select.php index 3b981fc3a..e83337c47 100755 --- a/modules/utenti/ajax/select.php +++ b/modules/utenti/ajax/select.php @@ -21,16 +21,16 @@ include_once __DIR__.'/../../../core.php'; switch ($resource) { case 'anagrafiche_utenti': - $query = 'SELECT `an_anagrafiche`.`idanagrafica` AS id, `an_anagrafiche`.`ragione_sociale` AS descrizione, `an_tipianagrafiche`.`descrizione` AS optgroup FROM `an_tipianagrafiche` INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` |where| ORDER BY `optgroup` ASC'; + $query = 'SELECT `an_anagrafiche`.`idanagrafica` AS id, `an_anagrafiche`.`ragione_sociale` AS descrizione, `an_tipianagrafiche_lang`.`name` AS optgroup FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id`=`an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang`='.prepare(setting('Lingua')).') INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche`.`id`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` |where| ORDER BY `optgroup` ASC'; - $where[] = 'an_anagrafiche.deleted_at IS NULL'; + $where[] = '`an_anagrafiche`.`deleted_at` IS NULL'; foreach ($elements as $element) { - $filter[] = 'an_anagrafiche.idanagrafica='.prepare($element); + $filter[] = '`an_anagrafiche`.`idanagrafica`='.prepare($element); } if (!empty($search)) { - $search_fields[] = 'an_anagrafiche.ragione_sociale LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_anagrafiche`.`ragione_sociale` LIKE '.prepare('%'.$search.'%'); } if (!empty($search_fields)) { @@ -64,22 +64,26 @@ switch ($resource) { break; case 'utenti': - $query = "SELECT zz_users.id AS id, if(`an_anagrafiche`.`idanagrafica` IS NOT NULL, CONCAT(`an_anagrafiche`.`ragione_sociale`, ' (', zz_users.username, ')'), zz_users.username) AS descrizione, `an_tipianagrafiche`.`descrizione` AS optgroup - FROM zz_users - LEFT JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `zz_users`.`idanagrafica` - INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` - INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` - |where| ORDER BY `optgroup` ASC"; + $query = "SELECT `zz_users`.`id` AS id, if(`an_anagrafiche`.`idanagrafica` IS NOT NULL, CONCAT(`an_anagrafiche`.`ragione_sociale`, ' (', `zz_users`.`username`, ')'), `zz_users`.`username`) AS descrizione, `an_tipianagrafiche_lang`.`name` AS optgroup + FROM + `zz_users` + LEFT JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `zz_users`.`idanagrafica` + INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` + INNER 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`.`id_lang`=".prepare(setting('Lingua')).') + |where| + ORDER BY + `optgroup` ASC'; - $where[] = 'an_anagrafiche.deleted_at IS NULL'; + $where[] = '`an_anagrafiche`.`deleted_at` IS NULL'; foreach ($elements as $element) { - $filter[] = 'zz_users.id='.prepare($element); + $filter[] = '`zz_users`.`id`='.prepare($element); } if (!empty($search)) { - $search_fields[] = 'an_anagrafiche.ragione_sociale LIKE '.prepare('%'.$search.'%'); - $search_fields[] = 'zz_users.username LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`an_anagrafiche`.`ragione_sociale` LIKE '.prepare('%'.$search.'%'); + $search_fields[] = '`zz_users`.`username` LIKE '.prepare('%'.$search.'%'); } if (!empty($search_fields)) { diff --git a/modules/utenti/edit.php b/modules/utenti/edit.php index 8a35356f7..4c325854a 100755 --- a/modules/utenti/edit.php +++ b/modules/utenti/edit.php @@ -19,7 +19,7 @@ include_once __DIR__.'/../../core.php'; -$utenti = $dbo->fetchArray('SELECT *, (SELECT ragione_sociale FROM an_anagrafiche WHERE an_anagrafiche.idanagrafica=zz_users.idanagrafica ) AS ragione_sociale, (SELECT GROUP_CONCAT(descrizione SEPARATOR ", ") FROM an_tipianagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche.idtipoanagrafica=an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE idanagrafica=zz_users.idanagrafica GROUP BY idanagrafica) AS tipo FROM zz_users WHERE idgruppo='.prepare($record['id'])); +$utenti = $dbo->fetchArray('SELECT *, (SELECT `ragione_sociale` FROM `an_anagrafiche` WHERE `an_anagrafiche`.`idanagrafica`=`zz_users`.`idanagrafica` ) AS `ragione_sociale`, (SELECT GROUP_CONCAT(`name` SEPARATOR ", ") FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche_lang`.`id_record` = `an_tipianagrafiche`.`id` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).') INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche`.`id`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` WHERE `idanagrafica`=`zz_users`.`idanagrafica` GROUP BY `idanagrafica`) AS tipo FROM `zz_users` WHERE `idgruppo`='.prepare($record['id'])); echo '
diff --git a/modules/utenti/src/API/v1/Login.php b/modules/utenti/src/API/v1/Login.php index 43aa61084..14c724726 100755 --- a/modules/utenti/src/API/v1/Login.php +++ b/modules/utenti/src/API/v1/Login.php @@ -35,7 +35,7 @@ class Login extends Resource implements CreateInterface $token = auth()->getToken(); // Informazioni da restituire tramite l'API - $response['user'] = $database->fetchOne('SELECT `an_anagrafiche`.`idanagrafica` AS idanagrafica, `ragione_sociale`, `codice`, `piva`, `codice_fiscale`, `indirizzo`, `citta`, `provincia`, (SELECT `nome` FROM `an_nazioni` WHERE `an_nazioni`.`id` = `an_anagrafiche`.`id_nazione`) AS nazione, `telefono`, `fax`, `cellulare`, `an_anagrafiche`.`email` FROM `zz_users` LEFT JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `zz_users`.`idanagrafica` WHERE `id` = :id', [ + $response['user'] = $database->fetchOne('SELECT `an_anagrafiche`.`idanagrafica` AS idanagrafica, `ragione_sociale`, `codice`, `piva`, `codice_fiscale`, `indirizzo`, `citta`, `provincia`, (SELECT `an_nazioni_lang`.`name` FROM `an_nazioni` LEFT JOIN `an_nazioni_lang` ON (`an_nazioni`.`id` = `an_nazioni_lang`.`id_record` AND `an_nazioni_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `an_nazioni`.`id` = `an_anagrafiche`.`id_nazione`) AS nazione, `telefono`, `fax`, `cellulare`, `an_anagrafiche`.`email` FROM `zz_users` LEFT JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `zz_users`.`idanagrafica` WHERE `id` = :id', [ ':id' => $user['id'], ]); diff --git a/plugins/exportFE/src/FatturaElettronica.php b/plugins/exportFE/src/FatturaElettronica.php index 4657e1169..92e936f3c 100755 --- a/plugins/exportFE/src/FatturaElettronica.php +++ b/plugins/exportFE/src/FatturaElettronica.php @@ -22,6 +22,7 @@ namespace Plugins\ExportFE; use FluidXml\FluidXml; use GuzzleHttp\Client; use Modules\Anagrafiche\Anagrafica; +use Modules\Anagrafiche\Nazione; use Modules\Anagrafiche\Sede; use Modules\Banche\Banca; use Modules\Fatture\Fattura; @@ -313,7 +314,7 @@ class FatturaElettronica ])); // Aggiornamento effettivo - $result=database()->update('co_documenti', [ + $result = database()->update('co_documenti', [ 'progressivo_invio' => $this->getDocumento()['progressivo_invio'], 'codice_stato_fe' => 'GEN', 'id_ricevuta_principale' => null, @@ -1118,8 +1119,7 @@ class FatturaElettronica } if (!empty($sede['id_nazione'])) { - $rs_nazione = $database->fetchOne('SELECT * FROM an_nazioni WHERE id='.prepare($sede['id_nazione'])); - + $rs_nazione = Nazione::find($sede['id_nazione']); $result['IndirizzoResa']['Nazione'] = $rs_nazione['iso2']; } } diff --git a/plugins/importFE/actions.php b/plugins/importFE/actions.php index af8f7edeb..05e27473c 100755 --- a/plugins/importFE/actions.php +++ b/plugins/importFE/actions.php @@ -20,6 +20,7 @@ include_once __DIR__.'/../../core.php'; use Carbon\Carbon; +use Modules\Anagrafiche\Tipo; use Modules\DDT\DDT; use Modules\Fatture\Fattura; use Modules\Fatture\Stato; @@ -173,12 +174,13 @@ switch (filter('op')) { } // Aggiorno la tipologia di anagrafica fornitore - $anagrafica = $database->fetchOne('SELECT idanagrafica FROM co_documenti WHERE co_documenti.id='.prepare($id_fattura)); - $rs_t = $database->fetchOne("SELECT * FROM an_tipianagrafiche_anagrafiche WHERE idtipoanagrafica=(SELECT an_tipianagrafiche.idtipoanagrafica FROM an_tipianagrafiche WHERE an_tipianagrafiche.descrizione='Fornitore') AND idanagrafica=".prepare($anagrafica['idanagrafica'])); + $anagrafica = $database->fetchOne('SELECT `idanagrafica` FROM `co_documenti` WHERE `co_documenti`.`id`='.prepare($id_fattura)); + $id_tipo = (new Tipo())->getByName('Fornitore')->id_record; + $rs_t = $database->fetchOne('SELECT * FROM `an_tipianagrafiche_anagrafiche` WHERE `idtipoanagrafica`='.prepare($id_tipo).' AND `idanagrafica`='.prepare($anagrafica['idanagrafica'])); // Se non trovo corrispondenza aggiungo all'anagrafica la tipologia fornitore if (empty($rs_t)) { - $database->query("INSERT INTO an_tipianagrafiche_anagrafiche (idtipoanagrafica, idanagrafica) VALUES ((SELECT an_tipianagrafiche.idtipoanagrafica FROM an_tipianagrafiche WHERE an_tipianagrafiche.descrizione='Fornitore'), ".prepare($anagrafica['idanagrafica']).')'); + $database->query("INSERT INTO `an_tipianagrafiche_anagrafiche` (`idtipoanagrafica`, `idanagrafica`) VALUES ($id_tipo, ".prepare($anagrafica['idanagrafica']).')'); } // Processo il file ricevuto diff --git a/plugins/importFE/src/FatturaElettronica.php b/plugins/importFE/src/FatturaElettronica.php index 9c76d21be..6162fefd6 100755 --- a/plugins/importFE/src/FatturaElettronica.php +++ b/plugins/importFE/src/FatturaElettronica.php @@ -206,7 +206,7 @@ class FatturaElettronica $tipologia = TipoAnagrafica::where('descrizione', $type)->first(); $anagrafica = Anagrafica::whereHas('tipi', function ($query) use ($tipologia) { - $query->where('an_tipianagrafiche.idtipoanagrafica', '=', $tipologia->id); + $query->where('`an_tipianagrafiche`.`id`', '=', $tipologia->id); }); if (!empty($info['partita_iva']) && !empty($info['codice_fiscale'])) { @@ -225,11 +225,10 @@ class FatturaElettronica // Se non trovo l'anagrafica tra i fornitori, provo a ricercarla anche tra i clienti if (empty($anagrafica->first())) { $type = 'Cliente'; - - $tipologia = TipoAnagrafica::where('descrizione', $type)->first(); + $tipologia = (new TipoAnagrafica())->getByName($type)->id_record; $anagrafica = Anagrafica::whereHas('tipi', function ($query) use ($tipologia) { - $query->where('an_tipianagrafiche.idtipoanagrafica', '=', $tipologia->id); + $query->where('`an_tipianagrafiche`.`id`', '=', $tipologia->id); }); if (!empty($info['partita_iva']) && !empty($info['codice_fiscale'])) { diff --git a/plugins/presentazioni_bancarie/src/Gestore.php b/plugins/presentazioni_bancarie/src/Gestore.php index c699d7641..321e4d20c 100644 --- a/plugins/presentazioni_bancarie/src/Gestore.php +++ b/plugins/presentazioni_bancarie/src/Gestore.php @@ -162,7 +162,7 @@ class Gestore $this->debito_diretto = new DirectDebitCBI(); } - public function aggiungi(Scadenza $scadenza, int $identifier, string $descrizione, string $codice_sequenza = null) + public function aggiungi(Scadenza $scadenza, int $identifier, string $descrizione, ?string $codice_sequenza = null) { $documento = $scadenza->documento; $controparte = $scadenza->anagrafica; diff --git a/plugins/provvigioni/add.php b/plugins/provvigioni/add.php index 58cd30ecc..5c6e49c95 100644 --- a/plugins/provvigioni/add.php +++ b/plugins/provvigioni/add.php @@ -34,7 +34,7 @@ echo '
- {[ "type": "select", "label": "'.tr('Agente').'", "name": "idagente", "values": "query=SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = \'\', \'\', CONCAT(\' (\', citta, \')\')), IF(deleted_at IS NULL, \'\', \' ('.tr('eliminata').')\')) AS descrizione, idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE deleted_at IS NULL AND descrizione=\'Agente\' AND an_anagrafiche.idanagrafica NOT IN (SELECT idagente FROM co_provvigioni) ORDER BY ragione_sociale", "required": 1, "icon-after": "add|'.Modules::get('Anagrafiche')['id'].'|tipoanagrafica=Agente&readonly_tipo=1" ]} + {[ "type": "select", "label": "'.tr('Agente').'", "name": "idagente", "values": "query=SELECT `an_anagrafiche`.`idanagrafica` AS id, CONCAT(`ragione_sociale`, IF(`citta` IS NULL OR `citta` = \'\', \'\', CONCAT(\' (\', `citta`, \')\')), IF(`deleted_at` IS NULL, \'\', \' ('.tr('eliminata').')\')) AS descrizione, `idtipointervento_default` 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`='.setting('Lingua').')) ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` WHERE `deleted_at` IS NULL AND `name`=\'Agente\' AND `an_anagrafiche`.`idanagrafica` NOT IN (SELECT `idagente` FROM `co_provvigioni`) ORDER BY `ragione_sociale`", "required": 1, "icon-after": "add|'.Modules::get('Anagrafiche')['id'].'|tipoanagrafica=Agente&readonly_tipo=1" ]}
diff --git a/plugins/provvigioni/edit.php b/plugins/provvigioni/edit.php index dbc96155d..f09d80659 100644 --- a/plugins/provvigioni/edit.php +++ b/plugins/provvigioni/edit.php @@ -33,7 +33,7 @@ echo '
- {[ "type": "select", "label": "'.tr('Agente').'", "name": "idagente", "value": "$idagente$", "values": "query=SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = \'\', \'\', CONCAT(\' (\', citta, \')\')), IF(deleted_at IS NULL, \'\', \' ('.tr('eliminata').')\')) AS descrizione, idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica WHERE deleted_at IS NULL AND descrizione=\'Agente\' AND an_anagrafiche.idanagrafica NOT IN (SELECT idagente FROM co_provvigioni WHERE idagente!='.prepare($record['idagente']).') ORDER BY ragione_sociale", "required": 1, "icon-after": "add|'.Modules::get('Anagrafiche')['id'].'|tipoanagrafica=Agente&readonly_tipo=1" ]} + {[ "type": "select", "label": "'.tr('Agente').'", "name": "idagente", "value": "$idagente$", "values": "query=SELECT `an_anagrafiche`.`idanagrafica` AS id, CONCAT(`ragione_sociale`, IF(`citta` IS NULL OR `citta` = \'\', \'\', CONCAT(\' (\', `citta`, \')\')), IF(`deleted_at` IS NULL, \'\', \' ('.tr('eliminata').')\')) AS descrizione, `idtipointervento_default` 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`='.setting('Lingua').')) ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` WHERE `deleted_at` IS NULL AND `name`=\'Agente\' AND `an_anagrafiche`.`idanagrafica` NOT IN (SELECT `idagente` FROM `co_provvigioni` WHERE `idagente`!='.prepare($record['idagente']).') ORDER BY `ragione_sociale`", "required": 1, "icon-after": "add|'.Modules::get('Anagrafiche')['id'].'|tipoanagrafica=Agente&readonly_tipo=1" ]}
diff --git a/plugins/sedi/init.php b/plugins/sedi/init.php index 170575f03..8df3d1758 100755 --- a/plugins/sedi/init.php +++ b/plugins/sedi/init.php @@ -19,6 +19,8 @@ include_once __DIR__.'/../../core.php'; +use Modules\Anagrafiche\Nazione; + // id_record = sede if (isset($id_record)) { $record = $dbo->fetchOne('SELECT * FROM an_sedi WHERE id='.prepare($id_record)); @@ -29,5 +31,5 @@ if (isset($id_record)) { // id_parent = anagrafica if (isset($id_parent)) { $record['tipo_anagrafica'] = $dbo->fetchOne('SELECT tipo FROM an_anagrafiche WHERE an_anagrafiche.idanagrafica ='.prepare($id_parent))['tipo']; - $record['iso2'] = $dbo->fetchOne('SELECT iso2 FROM an_nazioni INNER JOIN an_anagrafiche ON an_nazioni.id = an_anagrafiche.id_nazione WHERE an_anagrafiche.idanagrafica ='.prepare($id_parent))['iso2']; + $record['iso2'] = Nazione::find($record['id_nazione'])->iso2; } diff --git a/plugins/statistiche_anagrafiche/info.php b/plugins/statistiche_anagrafiche/info.php index 265c4b3b3..541b4d3d7 100755 --- a/plugins/statistiche_anagrafiche/info.php +++ b/plugins/statistiche_anagrafiche/info.php @@ -74,8 +74,10 @@ elseif ($anagrafica->isTipo('Tecnico')) { $interventi = Intervento::whereIn('id', array_column($interventi, 'id'))->get(); $totale_interventi = $interventi->sum('totale_imponibile'); -$sessioni = Sessione::whereIn('id', array_column($sessioni, 'id'))->get(); -$totale_ore_lavorate = $sessioni->sum('ore'); +if ($sessioni){ + $sessioni = Sessione::whereIn('id', array_column($sessioni, 'id'))->get(); + $totale_ore_lavorate = $sessioni->sum('ore'); +} // Ddt in uscita $ddt_uscita = DDT::whereBetween('data', [$start, $end]) @@ -222,15 +224,15 @@ echo '
- +
'.tr('Ore lavorate').''; if ($anagrafica->isTipo('Cliente')) { echo ' - '.($sessioni->count() > 0 ? ''.tr('Visualizza').' ' : '').''; + '.($sessioni ? ''.tr('Visualizza').' ' : '').''; } else { echo ' - '.($sessioni->count() > 0 ? ''.tr('Visualizza').' ' : '').''; + '.($sessioni ? ''.tr('Visualizza').' ' : '').''; } echo '
diff --git a/src/API/App/v1/Clienti.php b/src/API/App/v1/Clienti.php index 1ccffb4b2..7cfb95b2f 100644 --- a/src/API/App/v1/Clienti.php +++ b/src/API/App/v1/Clienti.php @@ -32,13 +32,16 @@ class Clienti extends AppResource public function getModifiedRecords($last_sync_at) { $parameters = []; - $query = "SELECT - an_anagrafiche.idanagrafica AS id, - an_anagrafiche.updated_at - FROM an_anagrafiche - INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica = an_anagrafiche.idanagrafica - INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica - WHERE an_tipianagrafiche.descrizione = 'Cliente' AND (an_anagrafiche.deleted_at IS NULL OR an_anagrafiche.idanagrafica IN(SELECT in_interventi.idanagrafica FROM in_interventi))"; + $query = 'SELECT + `an_anagrafiche`.`idanagrafica` AS id, + `an_anagrafiche`.`updated_at` + FROM + `an_anagrafiche` + INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` + 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`='.setting('Lingua').") + WHERE + `an_tipianagrafiche_lang`.`name` = 'Cliente' AND (`an_anagrafiche`.`deleted_at` IS NULL OR `an_anagrafiche`.`idanagrafica` IN(SELECT `in_interventi`.`idanagrafica` FROM `in_interventi`))"; // Sincronizzazione limitata ai Clienti con Interventi di interesse per il Tecnico corrente $sincronizza_lavorati = setting('Sincronizza solo i Clienti per cui il Tecnico ha lavorato in passato'); @@ -74,32 +77,33 @@ class Clienti extends AppResource public function retrieveRecord($id) { // Gestione della visualizzazione dei dettagli del record - $query = 'SELECT an_anagrafiche.idanagrafica AS id, - an_anagrafiche.ragione_sociale, - an_anagrafiche.tipo, - an_anagrafiche.piva AS partita_iva, - an_anagrafiche.codice_fiscale, - an_anagrafiche.indirizzo, - an_anagrafiche.indirizzo2, - an_anagrafiche.citta, - an_anagrafiche.cap, - an_anagrafiche.provincia, - an_anagrafiche.km, - IFNULL(an_anagrafiche.lat, 0.00) AS latitudine, - IFNULL(an_anagrafiche.lng, 0.00) AS longitudine, - an_nazioni.nome AS nazione, - an_anagrafiche.fax, - an_anagrafiche.telefono, - an_anagrafiche.cellulare, - an_anagrafiche.email, - an_anagrafiche.sitoweb AS sito_web, - an_anagrafiche.note, - an_anagrafiche.deleted_at, - IF(an_anagrafiche.deleted_at IS NULL, 0, 1) AS deleted, - an_anagrafiche.idtipointervento_default AS id_tipo_intervento_default - FROM an_anagrafiche - LEFT OUTER JOIN an_nazioni ON an_anagrafiche.id_nazione = an_nazioni.id - WHERE an_anagrafiche.idanagrafica = '.prepare($id); + $query = 'SELECT `an_anagrafiche`.`idanagrafica` AS id, + `an_anagrafiche`.`ragione_sociale`, + `an_anagrafiche`.`tipo`, + `an_anagrafiche`.`piva` AS partita_iva, + `an_anagrafiche`.`codice_fiscale`, + `an_anagrafiche`.`indirizzo`, + `an_anagrafiche`.`indirizzo2`, + `an_anagrafiche`.`citta`, + `an_anagrafiche`.`cap`, + `an_anagrafiche`.`provincia`, + `an_anagrafiche`.`km`, + IFNULL(`an_anagrafiche`.`lat`, 0.00) AS latitudine, + IFNULL(`an_anagrafiche`.`lng`, 0.00) AS longitudine, + `an_nazioni_lang`.`name` AS nazione, + `an_anagrafiche`.`fax`, + `an_anagrafiche`.`telefono`, + `an_anagrafiche`.`cellulare`, + `an_anagrafiche`.`email`, + `an_anagrafiche`.`sitoweb` AS sito_web, + `an_anagrafiche`.`note`, + `an_anagrafiche`.`deleted_at`, + IF(`an_anagrafiche`.`deleted_at` IS NULL, 0, 1) AS deleted, + `an_anagrafiche`.`idtipointervento_default` AS id_tipo_intervento_default + FROM `an_anagrafiche` + LEFT JOIN `an_nazioni` ON `an_anagrafiche`.`id_nazione` = `an_nazioni`.`id` + LEFT JOIN `an_nazioni_lang` ON (`an_nazioni`.`id` = `an_nazioni_lang`.`id_record` AND `an_nazioni_lang`.`id_lang` = '.prepare(setting('Lingua')).') + WHERE `an_anagrafiche`.`idanagrafica` = '.prepare($id); $record = database()->fetchOne($query); diff --git a/src/API/App/v1/Contratti.php b/src/API/App/v1/Contratti.php index 39b50ac10..7495f99c9 100644 --- a/src/API/App/v1/Contratti.php +++ b/src/API/App/v1/Contratti.php @@ -44,15 +44,18 @@ class Contratti extends AppResource implements RetrieveInterface public function getModifiedRecords($last_sync_at) { - $query = "SELECT - DISTINCT(co_contratti.id) AS id, - co_contratti.updated_at - FROM co_contratti - INNER JOIN co_staticontratti ON co_staticontratti.id = co_contratti.idstato - INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = co_contratti.idanagrafica - INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica = an_anagrafiche.idanagrafica - INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica - WHERE an_tipianagrafiche.descrizione = 'Cliente' AND co_staticontratti.is_pianificabile = 1 AND an_anagrafiche.deleted_at IS NULL"; + $query = 'SELECT + DISTINCT(`co_contratti`.`id`) AS id, + `co_contratti`.`updated_at` + FROM + `co_contratti` + INNER JOIN `co_staticontratti` ON `co_staticontratti`.`id` = `co_contratti`.`idstato` + INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `co_contratti`.`idanagrafica` + INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` + INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` = `an_tipianagrafiche`.`id` + LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche_lang`.`id_record` = `an_tipianagrafiche`.`id` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).") + WHERE + `an_tipianagrafiche_lang`.`name` = 'Cliente' AND `co_staticontratti`.`is_pianificabile` = 1 AND `an_anagrafiche`.`deleted_at` IS NULL"; // Filtro per data if ($last_sync_at) { diff --git a/src/API/App/v1/ControlloClienti.php b/src/API/App/v1/ControlloClienti.php index 9eb0263cf..e36efa729 100644 --- a/src/API/App/v1/ControlloClienti.php +++ b/src/API/App/v1/ControlloClienti.php @@ -47,7 +47,7 @@ class ControlloClienti extends Resource implements RetrieveInterface // Aggiunta tipologia Cliente se non presente nell'anagrafica trovata if (!empty($cliente) && !$cliente->isTipo('Cliente')) { $tipo_cliente = Tipo::where('descrizione', '=', 'Cliente')->first(); - $tipi = $cliente->tipi->pluck('idtipoanagrafica')->toArray(); + $tipi = $cliente->tipi->pluck('id')->toArray(); $tipi[] = $tipo_cliente->id; diff --git a/src/API/App/v1/Login.php b/src/API/App/v1/Login.php index 5e3d82f2b..f3d83680f 100755 --- a/src/API/App/v1/Login.php +++ b/src/API/App/v1/Login.php @@ -38,24 +38,25 @@ class Login extends Resource implements CreateInterface $utente = $database->fetchOne('SELECT `an_anagrafiche`.`idanagrafica` AS id_anagrafica, `an_anagrafiche`.`ragione_sociale`, - zz_groups.nome AS gruppo + `zz_groups`.`nome` AS gruppo FROM `zz_users` INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `zz_users`.`idanagrafica` - INNER JOIN zz_groups ON zz_users.idgruppo=zz_groups.id + INNER JOIN `zz_groups` ON `zz_users`.`idgruppo`=`zz_groups`.`id` WHERE `an_anagrafiche`.`deleted_at` IS NULL AND `zz_users`.`id` = :id', [ ':id' => $user['id'], ]); } else { - $utente = $database->fetchOne("SELECT + $utente = $database->fetchOne('SELECT `an_anagrafiche`.`idanagrafica` AS id_anagrafica, `an_anagrafiche`.`ragione_sociale`, - zz_groups.nome AS gruppo + `zz_groups`.`nome` AS gruppo FROM `zz_users` INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `zz_users`.`idanagrafica` - INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica = an_anagrafiche.idanagrafica - INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica - INNER JOIN zz_groups ON zz_users.idgruppo=zz_groups.id - WHERE an_tipianagrafiche.descrizione = 'Tecnico' AND `an_anagrafiche`.`deleted_at` IS NULL AND `id` = :id", [ + INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` + INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` = `an_tipianagrafiche`.`id` + LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche_lang`.`id_record` = `an_tipianagrafiche`.`id` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).") + INNER JOIN `zz_groups` ON `zz_users`.`idgruppo`=`zz_groups`.`id` + WHERE `an_tipianagrafiche_lang`.`name` = 'Tecnico' AND `an_anagrafiche`.`deleted_at` IS NULL AND `id` = :id", [ ':id' => $user['id'], ]); } diff --git a/src/API/App/v1/Preventivi.php b/src/API/App/v1/Preventivi.php index 3c1754b04..a9c3924ae 100644 --- a/src/API/App/v1/Preventivi.php +++ b/src/API/App/v1/Preventivi.php @@ -44,16 +44,21 @@ class Preventivi extends AppResource implements RetrieveInterface public function getModifiedRecords($last_sync_at) { - $query = "SELECT DISTINCT(co_preventivi.id) AS id, co_preventivi.updated_at FROM co_preventivi - INNER JOIN co_statipreventivi ON co_statipreventivi.id = co_preventivi.idstato - INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = co_preventivi.idanagrafica - INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica = an_anagrafiche.idanagrafica - INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica - WHERE an_tipianagrafiche.descrizione = 'Cliente' AND co_statipreventivi.is_pianificabile = 1 AND an_anagrafiche.deleted_at IS NULL"; + $query = "SELECT + DISTINCT(`co_preventivi`.`id`) AS id, + `co_preventivi`.`updated_at` + FROM + `co_preventivi` + INNER JOIN `co_statipreventivi` ON `co_statipreventivi`.`id` = `co_preventivi`.`idstato` + INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `co_preventivi`.`idanagrafica` + INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` + INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` = `an_tipianagrafiche`.`id` + WHERE + `an_tipianagrafiche_lang`.`name` = 'Cliente' AND `co_statipreventivi`.`is_pianificabile` = 1 AND `an_anagrafiche`.`deleted_at` IS NULL"; // Filtro per data if ($last_sync_at) { - $query .= ' AND co_preventivi.updated_at > '.prepare($last_sync_at); + $query .= ' AND `co_preventivi`.`updated_at` > '.prepare($last_sync_at); } $records = database()->fetchArray($query); @@ -64,16 +69,19 @@ class Preventivi extends AppResource implements RetrieveInterface public function retrieveRecord($id) { // Gestione della visualizzazione dei dettagli del record - $query = 'SELECT co_preventivi.id, - co_preventivi.idanagrafica AS id_cliente, - IF(co_preventivi.idsede = 0, NULL, co_preventivi.idsede) AS id_sede, - co_preventivi.nome, - co_preventivi.numero, - co_preventivi.data_bozza, - co_statipreventivi.descrizione AS stato - FROM co_preventivi - INNER JOIN co_statipreventivi ON co_statipreventivi.id = co_preventivi.idstato - WHERE co_preventivi.id = '.prepare($id); + $query = 'SELECT + `co_preventivi`.`id`, + `co_preventivi`.`idanagrafica` AS id_cliente, + IF(`co_preventivi`.`idsede` = 0, NULL, `co_preventivi`.`idsede`) AS id_sede, + `co_preventivi`.`nome`, + `co_preventivi`.`numero`, + `co_preventivi`.`data_bozza`, + `co_statipreventivi`.`descrizione` AS stato + FROM + `co_preventivi` + INNER JOIN `co_statipreventivi` ON `co_statipreventivi`.`id` = `co_preventivi`.`idstato` + WHERE + `co_preventivi`.`id` = '.prepare($id); $record = database()->fetchOne($query); diff --git a/src/API/App/v1/Referenti.php b/src/API/App/v1/Referenti.php index 4db834121..4afeb4938 100644 --- a/src/API/App/v1/Referenti.php +++ b/src/API/App/v1/Referenti.php @@ -31,15 +31,21 @@ class Referenti extends AppResource implements RetrieveInterface public function getModifiedRecords($last_sync_at) { - $query = "SELECT DISTINCT(an_referenti.id) AS id, an_referenti.updated_at FROM an_referenti - INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = an_referenti.idanagrafica - INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica = an_anagrafiche.idanagrafica - INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica - WHERE an_tipianagrafiche.descrizione = 'Cliente' AND (an_anagrafiche.deleted_at IS NULL OR an_anagrafiche.idanagrafica IN(SELECT in_interventi.idanagrafica FROM in_interventi))"; + $query = 'SELECT + DISTINCT(`an_referenti`.`id`) AS id, + `an_referenti`.`updated_at` + FROM + `an_referenti` + INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `an_referenti`.`idanagrafica` + INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` + INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` = `an_tipianagrafiche`.`id` + LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche_lang`.`id_record` = `an_tipianagrafiche`.`id` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua'))." + WHERE + `an_tipianagrafiche_lang`.`name` = 'Cliente' AND (an_anagrafiche.deleted_at IS NULL OR an_anagrafiche.idanagrafica IN(SELECT in_interventi.idanagrafica FROM in_interventi))"; // Filtro per data if ($last_sync_at) { - $query .= ' AND an_referenti.updated_at > '.prepare($last_sync_at); + $query .= ' AND `an_referenti`.`updated_at` > '.prepare($last_sync_at); } $records = database()->fetchArray($query); @@ -50,16 +56,18 @@ class Referenti extends AppResource implements RetrieveInterface public function retrieveRecord($id) { // Gestione della visualizzazione dei dettagli del record - $query = 'SELECT an_referenti.id, - idanagrafica AS id_cliente, - IF(idsede = 0, NULL, idsede) AS id_sede, - an_referenti.nome, - an_mansioni.nome AS mansione, - telefono, - email - FROM an_referenti - LEFT JOIN an_mansioni ON an_referenti.idmansione=an_mansioni.id - WHERE an_referenti.id = '.prepare($id); + $query = 'SELECT `an_referenti`.`id`, + `idanagrafica` AS id_cliente, + IF(`idsede` = 0, NULL, `idsede`) AS id_sede, + `an_referenti`.`nome`, + `an_mansioni`.`nome` AS mansione, + `telefono`, + `email` + FROM + `an_referenti` + LEFT JOIN `an_mansioni` ON `an_referenti`.`idmansione`=`an_mansioni`.`id` + WHERE + `an_referenti`.`id` = '.prepare($id); $record = database()->fetchOne($query); diff --git a/src/API/App/v1/Sedi.php b/src/API/App/v1/Sedi.php index 07b6ab5ab..9aed9831c 100644 --- a/src/API/App/v1/Sedi.php +++ b/src/API/App/v1/Sedi.php @@ -30,15 +30,21 @@ class Sedi extends AppResource public function getModifiedRecords($last_sync_at) { - $query = "SELECT DISTINCT(an_sedi.id) AS id, an_sedi.updated_at FROM an_sedi - INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = an_sedi.idanagrafica - INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica = an_anagrafiche.idanagrafica - INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica - WHERE an_tipianagrafiche.descrizione = 'Cliente' AND an_anagrafiche.deleted_at IS NULL"; + $query = 'SELECT + DISTINCT(`an_sedi`.`id`) AS id, + `an_sedi`.`updated_at` + FROM + `an_sedi` + INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `an_sedi`.`idanagrafica` + INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` + 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')).") + WHERE + `an_tipianagrafiche_lang`.`name` = 'Cliente' AND `an_anagrafiche`.`deleted_at` IS NULL"; // Filtro per data if ($last_sync_at) { - $query .= ' AND an_sedi.updated_at > '.prepare($last_sync_at); + $query .= ' AND `an_sedi`.`updated_at` > '.prepare($last_sync_at); } $records = database()->fetchArray($query); @@ -49,27 +55,28 @@ class Sedi extends AppResource public function retrieveRecord($id) { // Gestione della visualizzazione dei dettagli del record - $query = 'SELECT an_sedi.id, - an_sedi.idanagrafica AS id_cliente, - an_sedi.nomesede AS nome, - an_sedi.piva AS partita_iva, - an_sedi.codice_fiscale, - an_sedi.indirizzo, - an_sedi.indirizzo2, - an_sedi.citta, - an_sedi.cap, - an_sedi.provincia, - an_sedi.km, - IFNULL(an_sedi.lat, 0.00) AS latitudine, - IFNULL(an_sedi.lng, 0.00) AS longitudine, - an_nazioni.nome AS nazione, - an_sedi.telefono, - an_sedi.cellulare, - an_sedi.fax, - an_sedi.email - FROM an_sedi - LEFT OUTER JOIN an_nazioni ON an_sedi.id_nazione = an_nazioni.id - WHERE an_sedi.id = '.prepare($id); + $query = 'SELECT `an_sedi`.`id`, + `an_sedi`.`idanagrafica` AS id_cliente, + `an_sedi`.`nomesede` AS nome, + `an_sedi`.`piva` AS partita_iva, + `an_sedi`.`codice_fiscale`, + `an_sedi`.`indirizzo`, + `an_sedi`.`indirizzo2`, + `an_sedi`.`citta`, + `an_sedi`.`cap`, + `an_sedi`.`provincia`, + `an_sedi`.`km`, + IFNULL(`an_sedi`.`lat`, 0.00) AS latitudine, + IFNULL(`an_sedi`.`lng`, 0.00) AS longitudine, + `an_nazioni_lang`.`name` AS nazione, + `an_sedi`.`telefono`, + `an_sedi`.`cellulare`, + `an_sedi`.`fax`, + `an_sedi`.`email` + FROM `an_sedi` + LEFT JOIN `an_nazioni` ON `an_sedi`.`id_nazione` = `an_nazioni`.`id` + LEFT JOIN `an_nazioni_lang` ON (`an_nazioni`.`id` = `an_nazioni_lang`.`id_record` AND `an_nazioni_lang`.`id_lang` = '.prepare(setting('Lingua')).') + WHERE `an_sedi`.`id` = '.prepare($id); $record = database()->fetchOne($query); diff --git a/src/API/App/v1/SediAzienda.php b/src/API/App/v1/SediAzienda.php index 755ff4878..419f8d83c 100644 --- a/src/API/App/v1/SediAzienda.php +++ b/src/API/App/v1/SediAzienda.php @@ -30,11 +30,17 @@ class SediAzienda extends AppResource public function getModifiedRecords($last_sync_at) { - $query = "SELECT DISTINCT(an_sedi.id) AS id, an_sedi.updated_at FROM an_sedi - INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = an_sedi.idanagrafica - INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica = an_anagrafiche.idanagrafica - INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica - WHERE an_tipianagrafiche.descrizione = 'Azienda' AND an_anagrafiche.deleted_at IS NULL"; + $query = 'SELECT + DISTINCT(`an_sedi`.`id`) AS id, + `an_sedi`.`updated_at` + FROM + `an_sedi` + INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `an_sedi`.`idanagrafica` + INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` + 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')).") + WHERE + `an_tipianagrafiche_lang`.`name` = 'Azienda' AND `an_anagrafiche`.`deleted_at` IS NULL"; // Filtro per data if ($last_sync_at) { @@ -49,27 +55,28 @@ class SediAzienda extends AppResource public function retrieveRecord($id) { // Gestione della visualizzazione dei dettagli del record - $query = 'SELECT an_sedi.id, - an_sedi.idanagrafica AS id_cliente, - an_sedi.nomesede AS nome, - an_sedi.piva AS partita_iva, - an_sedi.codice_fiscale, - an_sedi.indirizzo, - an_sedi.indirizzo2, - an_sedi.citta, - an_sedi.cap, - an_sedi.provincia, - an_sedi.km, - IFNULL(an_sedi.lat, 0.00) AS latitudine, - IFNULL(an_sedi.lng, 0.00) AS longitudine, - an_nazioni.nome AS nazione, - an_sedi.telefono, - an_sedi.cellulare, - an_sedi.fax, - an_sedi.email - FROM an_sedi - LEFT OUTER JOIN an_nazioni ON an_sedi.id_nazione = an_nazioni.id - WHERE an_sedi.id = '.prepare($id); + $query = 'SELECT `an_sedi`.`id`, + `an_sedi`.`idanagrafica` AS id_cliente, + `an_sedi`.`nomesede` AS nome, + `an_sedi`.`piva` AS partita_iva, + `an_sedi`.`codice_fiscale`, + `an_sedi`.`indirizzo`, + `an_sedi`.`indirizzo2`, + `an_sedi`.`citta`, + `an_sedi`.`cap`, + `an_sedi`.`provincia`, + `an_sedi`.`km`, + IFNULL(`an_sedi`.`lat`, 0.00) AS latitudine, + IFNULL(`an_sedi`.`lng`, 0.00) AS longitudine, + `an_nazioni_lang`.`name` AS nazione, + `an_sedi`.`telefono`, + `an_sedi`.`cellulare`, + `an_sedi`.`fax`, + `an_sedi`.`email` + FROM `an_sedi` + LEFT JOIN `an_nazioni` ON `an_sedi`.`id_nazione` = `an_nazioni`.`id` + LEFT JOIN `an_nazioni_lang` ON (`an_nazioni`.`id` = `an_nazioni_lang`.`id_record` AND `an_nazioni_lang`.`id_lang` = '.prepare(setting('Lingua')).') + WHERE `an_sedi`.`id` = '.prepare($id); $record = database()->fetchOne($query); diff --git a/src/Common/Components/Component.php b/src/Common/Components/Component.php index 65cd792a1..83c6287b9 100644 --- a/src/Common/Components/Component.php +++ b/src/Common/Components/Component.php @@ -367,7 +367,7 @@ abstract class Component extends Model return $result; } - public function replicate(array $except = null) + public function replicate(?array $except = null) { $new = parent::replicate($except); diff --git a/src/Util/Query.php b/src/Util/Query.php index fa2f98356..72167728d 100755 --- a/src/Util/Query.php +++ b/src/Util/Query.php @@ -72,6 +72,7 @@ class Query $id_module = \Modules::getCurrent()['id']; $segment = !empty(self::$segments) ? $_SESSION['module_'.$id_module]['id_segment'] : null; $is_sezionale = database()->fetchOne('SELECT `is_sezionale` FROM `zz_segments` WHERE `id` = '.prepare($segment))['is_sezionale']; + $lang = setting('Lingua'); $user = \Auth::user(); @@ -98,7 +99,7 @@ class Query $date_query = !empty($filters) && !empty(self::$segments) ? ' AND ('.implode(' OR ', $filters).')' : ''; } - // Sostituzione periodi temporali + // Sostituzione segmenti preg_match('|segment\((.+?)\)|', (string) $query, $matches); $segment_name = !empty($matches[1]) ? $matches[1] : 'id_segment'; $segment_filter = !empty($matches[0]) ? $matches[0] : 'segment'; @@ -122,6 +123,9 @@ class Query // Filtro dinamico per il modulo Giacenze sedi '|giacenze_sedi_idsede|' => prepare(isset($_SESSION['giacenze_sedi']) ? $_SESSION['giacenze_sedi']['idsede'] : null), + + // Filtro per lingua + '|lang|' => '`id_lang` = '.prepare($lang), ]; // Sostituzione dei formati diff --git a/templates/contratti/init.php b/templates/contratti/init.php index 8e82bfe73..fcaf5287d 100755 --- a/templates/contratti/init.php +++ b/templates/contratti/init.php @@ -19,6 +19,7 @@ include_once __DIR__.'/../../core.php'; +use Modules\Anagrafiche\Nazione; use Modules\Contratti\Contratto; $documento = Contratto::find($id_record); @@ -52,9 +53,9 @@ if (!empty($documento->idsede)) { $destinazione .= ' ('.$rsd[0]['provincia'].')'; } if (!empty($rsd[0]['id_nazione'])) { - $nazione = $database->fetchOne('SELECT * FROM an_nazioni WHERE id = '.prepare($rsd[0]['id_nazione'])); + $nazione = Nazione::find($rsd[0]['id_nazione']); if ($nazione['iso2'] != 'IT') { - $destinazione .= ' - '.$nazione['name']; + $destinazione .= ' - '.$nazione->name; } } } diff --git a/templates/ddt/init.php b/templates/ddt/init.php index e65058434..88120fdd8 100755 --- a/templates/ddt/init.php +++ b/templates/ddt/init.php @@ -19,6 +19,7 @@ include_once __DIR__.'/../../core.php'; +use Modules\Anagrafiche\Nazione; use Modules\DDT\DDT; $documento = DDT::find($id_record); @@ -70,9 +71,9 @@ if (!empty($documento['idsede_destinazione'])) { $destinazione .= ' ('.$rsd[0]['provincia'].')'; } if (!empty($rsd[0]['id_nazione'])) { - $nazione = $database->fetchOne('SELECT * FROM an_nazioni WHERE id = '.prepare($rsd[0]['id_nazione'])); + $nazione = Nazione::find($rsd[0]['id_nazione']); if ($nazione['iso2'] != 'IT') { - $destinazione .= ' - '.$nazione['name'].'
'; + $destinazione .= ' - '.$nazione->name.'
'; } } if (!empty($rsd[0]['telefono'])) { @@ -107,9 +108,9 @@ if (!empty($documento['idsede_partenza'])) { $partenza .= ' ('.$rsd[0]['provincia'].')'; } if (!empty($rsd[0]['id_nazione'])) { - $nazione = $database->fetchOne('SELECT * FROM an_nazioni WHERE id = '.prepare($rsd[0]['id_nazione'])); + $nazione = Nazione::find($rsd[0]['id_nazione']); if ($nazione['iso2'] != 'IT') { - $partenza .= ' - '.$nazione['name'].'
'; + $partenza .= ' - '.$nazione->name.'
'; } } if (!empty($rsd[0]['telefono'])) { diff --git a/templates/fatture/init.php b/templates/fatture/init.php index 755a9578a..3ebe747b5 100755 --- a/templates/fatture/init.php +++ b/templates/fatture/init.php @@ -19,6 +19,7 @@ include_once __DIR__.'/../../core.php'; +use Modules\Anagrafiche\Nazione; use Modules\Fatture\Fattura; $documento = Fattura::find($id_record); @@ -91,9 +92,9 @@ if (!empty($record['idsede_destinazione'])) { $destinazione .= ' ('.$rsd[0]['provincia'].')'; } if (!empty($rsd[0]['id_nazione'])) { - $nazione = $database->fetchOne('SELECT * FROM an_nazioni WHERE id = '.prepare($rsd[0]['id_nazione'])); + $nazione = Nazione::find($rsd[0]['id_nazione']); if ($nazione['iso2'] != 'IT') { - $destinazione .= ' - '.$nazione['name']; + $destinazione .= ' - '.$nazione->name; } } } diff --git a/templates/info.php b/templates/info.php index b7dfacbe6..f57582675 100755 --- a/templates/info.php +++ b/templates/info.php @@ -17,6 +17,8 @@ * along with this program. If not, see . */ +use Modules\Anagrafiche\Nazione; + $replaces = []; // Retrocompatibilità @@ -85,9 +87,9 @@ foreach ($replace as $prefix => $values) { $citta .= ' ('.$values['provincia'].')'; } if (!empty($values['id_nazione'])) { - $nazione = $database->fetchOne('SELECT * FROM an_nazioni WHERE id = '.prepare($values['id_nazione'])); + $nazione = Nazione::find($values['id_nazione']); if ($nazione['iso2'] != 'IT') { - $citta .= ' - '.$nazione['name']; + $citta .= ' - '.$nazione->name; } } diff --git a/templates/ordini/init.php b/templates/ordini/init.php index c2665b73e..6d36b2e5a 100755 --- a/templates/ordini/init.php +++ b/templates/ordini/init.php @@ -19,6 +19,7 @@ include_once __DIR__.'/../../core.php'; +use Modules\Anagrafiche\Nazione; use Modules\Ordini\Ordine; $documento = Ordine::find($id_record); @@ -52,9 +53,9 @@ if (!empty($documento->idsede)) { $destinazione .= ' ('.$rsd[0]['provincia'].')'; } if (!empty($rsd[0]['id_nazione'])) { - $nazione = $database->fetchOne('SELECT * FROM an_nazioni WHERE id = '.prepare($rsd[0]['id_nazione'])); + $nazione = Nazione::find($rsd[0]['id_nazione']); if ($nazione['iso2'] != 'IT') { - $destinazione .= ' - '.$nazione['name']; + $destinazione .= ' - '.$nazione->name; } } } diff --git a/templates/preventivi/init.php b/templates/preventivi/init.php index 3f0dc9da0..6fbefb6f1 100755 --- a/templates/preventivi/init.php +++ b/templates/preventivi/init.php @@ -19,6 +19,7 @@ include_once __DIR__.'/../../core.php'; +use Modules\Anagrafiche\Nazione; use Modules\Preventivi\Preventivo; $documento = Preventivo::find($id_record); @@ -52,9 +53,9 @@ if (!empty($documento->idsede)) { $destinazione .= ' ('.$rsd[0]['provincia'].')'; } if (!empty($rsd[0]['id_nazione'])) { - $nazione = $database->fetchOne('SELECT * FROM an_nazioni WHERE id = '.prepare($rsd[0]['id_nazione'])); + $nazione = Nazione::find($rsd[0]['id_nazione']); if ($nazione['iso2'] != 'IT') { - $destinazione .= ' - '.$nazione['name']; + $destinazione .= ' - '.$nazione->name; } } } diff --git a/update/2_4_55.sql b/update/2_4_55.sql new file mode 100644 index 000000000..d36a26d3b --- /dev/null +++ b/update/2_4_55.sql @@ -0,0 +1,256 @@ +-- Aggiornamento impostazione cifre decimali +UPDATE `zz_settings` SET `tipo` = 'list[2,3,4,5]' WHERE `nome` = 'Cifre decimali per importi'; +UPDATE `zz_settings` SET `tipo` = 'list[0,1,2,3,4,5]' WHERE `nome` = 'Cifre decimali per quantità'; + +-- Aggiunta impostazione per lingua di default +INSERT INTO `zz_settings` (`nome`, `valore`, `tipo`, `editable`, `sezione`,`order`, `help`) VALUES ('Lingua', '1', 'query=SELECT `id`, `name` AS descrizione FROM `zz_langs` ORDER BY `descrizione` ASC', '1', 'Generali',NULL, 'Seleziona la lingua di default del gestionale'); + +-- Aggiunta tabella zz_langs +CREATE TABLE IF NOT EXISTS `zz_langs` ( + `id` int NOT NULL, + `name` varchar(255) NOT NULL, + `enabled` tinyint(1) NOT NULL, + `iso_code` varchar(2) NOT NULL, + `language_code` varchar(5) NOT NULL, + `date` varchar(100) NOT NULL, + `time` varchar(100) NOT NULL, + `timestamp` varchar(100) NOT NULL, + `decimals` varchar(1) NOT NULL, + `thousands` varchar(1) NULL, + `is_rtl` tinyint(1) NOT NULL +); + +ALTER TABLE `zz_langs` + ADD PRIMARY KEY (`id`); + +ALTER TABLE `zz_langs` + MODIFY `id` int NOT NULL AUTO_INCREMENT; + +INSERT INTO `zz_langs` (`id`, `name`, `enabled`, `iso_code`, `language_code`, `date`, `time`, `timestamp`, `decimals`, `thousands`, `is_rtl`) VALUES (NULL, 'Italiano (Italian)', '1', 'it', 'it-it', 'd/m/Y', 'H:i', 'd/m/Y H:i', ',', NULL, 0); +INSERT INTO `zz_langs` (`id`, `name`, `enabled`, `iso_code`, `language_code`, `date`, `time`, `timestamp`, `decimals`, `thousands`, `is_rtl`) VALUES (NULL, 'English (English)', '1', 'en', 'en-gb', 'm/d/Y', 'H:i', 'm/d/Y H:i', ',', NULL, 0); + +-- Aggiunta valuta dollaro +INSERT INTO `zz_currencies` (`id`, `name`, `title`, `symbol`) VALUES (NULL, 'Dollaro', 'Dollaro', '$'); + +-- Aggiunta tabella an_nazioni_lang +CREATE TABLE IF NOT EXISTS `an_nazioni_lang` ( + `id` int NOT NULL, + `id_lang` int NOT NULL, + `id_record` int NOT NULL, + `name` VARCHAR(255) NOT NULL +); + +ALTER TABLE `an_nazioni_lang` + ADD PRIMARY KEY (`id`); + +ALTER TABLE `an_nazioni_lang` + MODIFY `id` int NOT NULL AUTO_INCREMENT; + +INSERT INTO `an_nazioni_lang` (`id`, `id_lang`, `id_record`, `name`) SELECT NULL, (SELECT `id` FROM `zz_langs` WHERE `iso_code` = 'it'), `id`, `nome` FROM `an_nazioni`; + +INSERT INTO `an_nazioni_lang` (`id`, `id_lang`, `id_record`, `name`) SELECT NULL, (SELECT `id` FROM `zz_langs` WHERE `iso_code` = 'en'), `id`, `name` FROM `an_nazioni`; + +ALTER TABLE `an_nazioni` + DROP `nome`, + DROP `name`; + +ALTER TABLE `an_nazioni_lang` ADD CONSTRAINT `an_nazioni_lang_ibfk_1` FOREIGN KEY (`id_record`) REFERENCES `an_nazioni`(`id`) ON DELETE CASCADE ON UPDATE RESTRICT; + +-- Allineamento vista Eventi +UPDATE `zz_modules` SET `options` = " +SELECT + |select| +FROM + `zz_events` +INNER JOIN `an_nazioni` ON `an_nazioni`.`id` = `zz_events`.`id_nazione` +INNER JOIN `an_nazioni_lang` ON (`an_nazioni`.`id` = `an_nazioni_lang`.`id_record` AND |lang|) +WHERE + 1=1 +HAVING + 2=2" WHERE `name` = 'Eventi'; +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`an_nazioni_lang`.`name`' WHERE `zz_modules`.`name` = 'Eventi' AND `zz_views`.`name` = 'Nazione'; + +-- Aggiunta tabella an_provenienze_lang +CREATE TABLE IF NOT EXISTS `an_provenienze_lang` ( + `id` int NOT NULL, + `id_lang` int NOT NULL, + `id_record` int NOT NULL, + `name` VARCHAR(255) NOT NULL +); +ALTER TABLE `an_provenienze_lang` + ADD PRIMARY KEY (`id`); + +ALTER TABLE `an_provenienze_lang` + MODIFY `id` int NOT NULL AUTO_INCREMENT; + +INSERT INTO `an_provenienze_lang` (`id`, `id_lang`, `id_record`, `name`) SELECT NULL, (SELECT `id` FROM `zz_langs` WHERE `iso_code` = 'it'), `id`, `descrizione` FROM `an_provenienze`; + +ALTER TABLE `an_provenienze` + DROP `descrizione`; + +ALTER TABLE `an_provenienze_lang` ADD CONSTRAINT `an_provenienze_lang_ibfk_1` FOREIGN KEY (`id_record`) REFERENCES `an_provenienze`(`id`) ON DELETE CASCADE ON UPDATE RESTRICT; + +-- Allineamento vista Provenienze +UPDATE `zz_modules` SET `options` = " +SELECT + |select| +FROM + `an_provenienze` + LEFT JOIN `an_provenienze_lang` ON (`an_provenienze`.`id` = `an_provenienze_lang`.`id_record` AND |lang|) +WHERE + 1=1 +HAVING + 2=2" WHERE `name` = 'Provenienze'; +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`an_provenienze_lang`.`name`' WHERE `zz_modules`.`name` = 'Provenienze' AND `zz_views`.`name` = 'descrizione'; + +-- Aggiunta tabella an_regioni_lang +CREATE TABLE IF NOT EXISTS `an_regioni_lang` ( + `id` int NOT NULL, + `id_lang` int NOT NULL, + `id_record` int NOT NULL, + `name` VARCHAR(255) NOT NULL +); +ALTER TABLE `an_regioni_lang` + ADD PRIMARY KEY (`id`); + +ALTER TABLE `an_regioni_lang` + MODIFY `id` int NOT NULL AUTO_INCREMENT; + +INSERT INTO `an_regioni_lang` (`id`, `id_lang`, `id_record`, `name`) SELECT NULL, (SELECT `id` FROM `zz_langs` WHERE `iso_code` = 'it'), `id`, `nome` FROM `an_regioni`; + +ALTER TABLE `an_regioni` + DROP `nome`; + +ALTER TABLE `an_regioni_lang` ADD CONSTRAINT `an_regioni_lang_ibfk_1` FOREIGN KEY (`id_record`) REFERENCES `an_regioni`(`id`) ON DELETE CASCADE ON UPDATE RESTRICT; + +-- Aggiunta tabella an_relazioni_lang +CREATE TABLE IF NOT EXISTS `an_relazioni_lang` ( + `id` int NOT NULL, + `id_lang` int NOT NULL, + `id_record` int NOT NULL, + `name` VARCHAR(255) NOT NULL +); +ALTER TABLE `an_relazioni_lang` + ADD PRIMARY KEY (`id`); + +ALTER TABLE `an_relazioni_lang` + MODIFY `id` int NOT NULL AUTO_INCREMENT; + +INSERT INTO `an_relazioni_lang` (`id`, `id_lang`, `id_record`, `name`) SELECT NULL, (SELECT `id` FROM `zz_langs` WHERE `iso_code` = 'it'), `id`, `descrizione` FROM `an_relazioni`; + +ALTER TABLE `an_relazioni` + DROP `descrizione`; + +ALTER TABLE `an_relazioni_lang` ADD CONSTRAINT `an_relazioni_lang_ibfk_1` FOREIGN KEY (`id_record`) REFERENCES `an_relazioni`(`id`) ON DELETE CASCADE ON UPDATE RESTRICT; + +-- Allineamento vista Relazioni +UPDATE `zz_modules` SET `options` = " +SELECT + |select| +FROM + `an_relazioni` + LEFT JOIN `an_relazioni_lang` ON (`an_relazioni`.`id` = `an_relazioni_lang`.`id_record` AND |lang|) +WHERE + 1=1 AND `deleted_at` IS NULL +HAVING + 2=2 +ORDER BY + `an_relazioni`.`created_at` DESC" WHERE `name` = 'Relazioni'; +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`an_relazioni_lang`.`name`' WHERE `zz_modules`.`name` = 'Relazioni' AND `zz_views`.`name` = 'descrizione'; + +-- Aggiunta tabella an_settori_lang +CREATE TABLE IF NOT EXISTS `an_settori_lang` ( + `id` int NOT NULL, + `id_lang` int NOT NULL, + `id_record` int NOT NULL, + `name` VARCHAR(255) NOT NULL +); +ALTER TABLE `an_settori_lang` + ADD PRIMARY KEY (`id`); + +ALTER TABLE `an_settori_lang` + MODIFY `id` int NOT NULL AUTO_INCREMENT; + +INSERT INTO `an_settori_lang` (`id`, `id_lang`, `id_record`, `name`) SELECT NULL, (SELECT `id` FROM `zz_langs` WHERE `iso_code` = 'it'), `id`, `descrizione` FROM `an_settori`; + +ALTER TABLE `an_settori` + DROP `descrizione`; + +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 +UPDATE `zz_modules` SET `options` = " +SELECT + |select| +FROM + `an_settori` + LEFT JOIN `an_settori_lang` ON (`an_settori`.`id` = `an_settori_lang`.`id_record` AND |lang|) +WHERE + 1=1 +HAVING + 2=2" WHERE `name` = 'Settori'; +UPDATE `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` SET `zz_views`.`query` = '`an_settori_lang`.`name`' WHERE `zz_modules`.`name` = 'Settori' AND `zz_views`.`name` = 'descrizione'; + +ALTER TABLE `an_tipianagrafiche` CHANGE `idtipoanagrafica` `id` INT NOT NULL AUTO_INCREMENT; + +-- Aggiunta tabella an_tipianagrafiche_lang +CREATE TABLE IF NOT EXISTS `an_tipianagrafiche_lang` ( + `id` int NOT NULL, + `id_lang` int NOT NULL, + `id_record` int NOT NULL, + `name` VARCHAR(255) NOT NULL +); +ALTER TABLE `an_tipianagrafiche_lang` + ADD PRIMARY KEY (`id`); + +ALTER TABLE `an_tipianagrafiche_lang` + MODIFY `id` int NOT NULL AUTO_INCREMENT; + +INSERT INTO `an_tipianagrafiche_lang` (`id`, `id_lang`, `id_record`, `name`) SELECT NULL, (SELECT `id` FROM `zz_langs` WHERE `iso_code` = 'it'), `id`, `descrizione` FROM `an_tipianagrafiche`; + +ALTER TABLE `an_tipianagrafiche` + DROP `descrizione`; + +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` = '`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` = '`an_tipianagrafiche_lang`.`name`' WHERE `zz_modules`.`name` = 'Anagrafiche' AND `zz_views`.`name` = 'Tipo'; + +-- Allineamento vista Tipi di anagrafiche +UPDATE `zz_modules` SET `options` = " +SELECT + |select| +FROM + `an_tipianagrafiche` + LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.|lang|) +WHERE + 1=1 +HAVING + 2=2" WHERE `name` = 'Tipi di anagrafiche'; +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 diff --git a/update/tables.php b/update/tables.php index 7cdef8b2a..71f8c4878 100755 --- a/update/tables.php +++ b/update/tables.php @@ -4,15 +4,20 @@ return [ 'an_anagrafiche', 'an_anagrafiche_agenti', 'an_nazioni', + 'an_nazioni_lang', 'an_mansioni', 'an_referenti', 'an_regioni', + 'an_regioni_lang', 'an_relazioni', + 'an_relazioni_lang', 'an_provenienze', + 'an_provenienze_lang', 'an_settori', 'an_sedi', 'an_tipianagrafiche', 'an_tipianagrafiche_anagrafiche', + 'an_tipianagrafiche_lang', 'an_zone', 'an_pagamenti_anagrafiche', 'an_sedi_tecnici',