1
0
mirror of https://github.com/devcode-it/openstamanager.git synced 2025-02-16 19:40:44 +01:00

Prima aggiunta tabelle traduzioni

This commit is contained in:
Pek5892 2024-02-05 17:07:33 +01:00
parent c6107b0121
commit ff89f281e2
71 changed files with 978 additions and 543 deletions

View File

@ -19,14 +19,17 @@
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
use Modules\Anagrafiche\Tipo;
if (Update::isUpdateAvailable() || !$dbo->isInstalled()) { if (Update::isUpdateAvailable() || !$dbo->isInstalled()) {
return; 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_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica`
LEFT JOIN `an_tipianagrafiche` ON `an_tipianagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` LEFT JOIN `an_tipianagrafiche` ON `an_tipianagrafiche`.`id`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica`
WHERE `an_tipianagrafiche`.`descrizione` = 'Azienda' AND `an_anagrafiche`.`deleted_at` IS NULL") != 0; 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; $has_user = $dbo->fetchNum('SELECT `id` FROM `zz_users`') != 0;
$settings = [ $settings = [
@ -168,7 +171,7 @@ if (!$has_azienda) {
<div class="panel-body" id="bs-popup">'; <div class="panel-body" id="bs-popup">';
$idtipoanagrafica = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Azienda'")[0]['idtipoanagrafica']; $idtipoanagrafica = (new Tipo())->getByName('Azienda')->id_record;
$readonly_tipo = true; $readonly_tipo = true;
ob_start(); ob_start();

View File

@ -53,19 +53,20 @@ class PianoConti extends Controllo
* Verifico se serve creare un conto per eventuali nuovi clienti o fornitori. * Verifico se serve creare un conto per eventuali nuovi clienti o fornitori.
*/ */
$anagrafiche_interessate = $database->fetchArray('SELECT $anagrafiche_interessate = $database->fetchArray('SELECT
an_anagrafiche.idanagrafica AS id, `an_anagrafiche`.`idanagrafica` AS id,
an_anagrafiche.idconto_cliente, `an_anagrafiche`.`idconto_cliente`,
an_anagrafiche.idconto_fornitore, `an_anagrafiche`.`idconto_fornitore`,
an_anagrafiche.ragione_sociale, `an_anagrafiche`.`ragione_sociale`,
GROUP_CONCAT(an_tipianagrafiche.descrizione) AS tipi_anagrafica GROUP_CONCAT(`an_tipianagrafiche_lang`.`name`) AS tipi_anagrafica
FROM an_anagrafiche FROM `an_anagrafiche`
INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica = an_anagrafiche.idanagrafica 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 INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche`.`id` = `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica`
WHERE LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).')
(idconto_cliente = 0 OR idconto_cliente IS NULL OR idconto_fornitore = 0 OR idconto_fornitore IS NULL) WHERE
AND (`idconto_cliente` = 0 OR `idconto_cliente` IS NULL OR `idconto_fornitore` = 0 OR `idconto_fornitore` IS NULL)
deleted_at IS NULL AND
GROUP BY an_anagrafiche.idanagrafica'); `deleted_at` IS NULL
GROUP BY `an_anagrafiche`.`idanagrafica`');
foreach ($anagrafiche_interessate as $anagrafica) { foreach ($anagrafiche_interessate as $anagrafica) {
$tipi = explode(',', $anagrafica['tipi_anagrafica']); $tipi = explode(',', $anagrafica['tipi_anagrafica']);

View File

@ -53,18 +53,19 @@ class ReaValidi extends Controllo
* Verifico se i R.E.A. inseriti per le anagrafiche hanno una struttura valida. * Verifico se i R.E.A. inseriti per le anagrafiche hanno una struttura valida.
*/ */
$anagrafiche_interessate = $database->fetchArray('SELECT $anagrafiche_interessate = $database->fetchArray('SELECT
an_anagrafiche.idanagrafica AS id, `an_anagrafiche`.`idanagrafica` AS id,
an_anagrafiche.codicerea, `an_anagrafiche`.`codicerea`,
an_anagrafiche.ragione_sociale, `an_anagrafiche`.`ragione_sociale`,
GROUP_CONCAT(an_tipianagrafiche.descrizione) AS tipi_anagrafica GROUP_CONCAT(`an_tipianagrafiche_lang`.`name`) AS tipi_anagrafica
FROM an_anagrafiche FROM `an_anagrafiche`
INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica = an_anagrafiche.idanagrafica 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 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 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 AND
deleted_at IS NULL `deleted_at` IS NULL
GROUP BY an_anagrafiche.idanagrafica'); GROUP BY `an_anagrafiche`.`idanagrafica`');
foreach ($anagrafiche_interessate as $anagrafica) { foreach ($anagrafiche_interessate as $anagrafica) {
/*$tipi = explode(',', $anagrafica['tipi_anagrafica']); /*$tipi = explode(',', $anagrafica['tipi_anagrafica']);

View File

@ -197,7 +197,7 @@ switch (post('op')) {
// Lettura tipologia dell'utente loggato // Lettura tipologia dell'utente loggato
$agente_is_logged = false; $agente_is_logged = false;
if (!empty($user['idanagrafica'])) { 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) { for ($i = 0; $i < count($rs); ++$i) {
if ($rs[$i]['descrizione'] == 'Agente') { if ($rs[$i]['descrizione'] == 'Agente') {
@ -236,8 +236,7 @@ switch (post('op')) {
echo json_encode(['id' => $id_record, 'text' => $anagrafica->ragione_sociale]); 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_', [ flash()->info(tr('Aggiunta nuova anagrafica di tipo _TYPE_', [
'_TYPE_' => '"'.implode(', ', $descrizioni_tipi).'"', '_TYPE_' => '"'.implode(', ', $descrizioni_tipi).'"',
])); ]));

View File

@ -21,11 +21,11 @@ use Modules\Anagrafiche\Nazione;
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
$id_nazione_italia = Nazione::where('nome', 'Italia')->first()->id; $id_nazione_italia = (new Nazione())->getByName('Italia')->id_record;
$tipo = get('tipoanagrafica');
if (get('tipoanagrafica') != '') { if (!empty($tipo)) {
$rs = $dbo->fetchArray('SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='.prepare(get('tipoanagrafica'))); $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]['idtipoanagrafica']; $idtipoanagrafica = $rs[0]['id'];
} }
echo ' echo '
@ -39,7 +39,7 @@ echo '
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
{[ "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).' ]}
</div> </div>
</div> </div>
@ -99,7 +99,7 @@ echo '
<div class="row"> <div class="row">
<div class="col-md-4"> <div class="col-md-4">
{[ "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.'" ]}
</div> </div>
<div class="col-md-4"> <div class="col-md-4">

View File

@ -26,62 +26,61 @@ switch ($resource) {
$id_azienda = setting('Azienda predefinita'); $id_azienda = setting('Azienda predefinita');
$query = "SELECT $query = "SELECT
an_anagrafiche.idanagrafica AS id, `an_anagrafiche`.`idanagrafica` AS id,
an_anagrafiche.lat, `an_anagrafiche`.`lat`,
an_anagrafiche.lng, `an_anagrafiche`.`lng`,
is_bloccata, `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, 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, `idtipointervento_default` AS idtipointervento,
in_tipiintervento.descrizione AS idtipointervento_descrizione, `in_tipiintervento`.`descrizione` AS idtipointervento_descrizione,
an_anagrafiche.idzona, `an_anagrafiche`.`idzona`,
contratto.id AS id_contratto, `contratto`.`id` AS id_contratto,
contratto.descrizione AS descrizione_contratto, `contratto`.`descrizione` AS descrizione_contratto,
co_pagamenti.id AS id_pagamento, `co_pagamenti`.`id` AS id_pagamento,
co_pagamenti.descrizione AS desc_pagamento, `co_pagamenti`.`descrizione` AS desc_pagamento,
banca_vendite.id AS id_banca_vendite, `banca_vendite`.`id` AS id_banca_vendite,
CONCAT(banca_vendite.nome, ' - ', banca_vendite.iban) AS descrizione_banca_vendite CONCAT(`banca_vendite`.`nome`, ' - ', `banca_vendite`.`iban`) AS descrizione_banca_vendite
FROM FROM
an_anagrafiche `an_anagrafiche`
INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN (`an_tipianagrafiche_anagrafiche`
INNER JOIN an_tipianagrafiche INNER JOIN `an_tipianagrafiche`ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche`.`id`
ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) 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 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 LEFT JOIN
an_relazioni (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.idrelazione=an_relazioni.id ON `an_anagrafiche`.`idanagrafica`=`contratto`.`idanagrafica`
LEFT JOIN 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 `co_pagamenti`
ON an_anagrafiche.idanagrafica=contratto.idanagrafica ON `an_anagrafiche`.`idpagamento_vendite`=`co_pagamenti`.`id`
LEFT JOIN LEFT JOIN
co_pagamenti `co_banche` banca_vendite
ON an_anagrafiche.idpagamento_vendite=co_pagamenti.id 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
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
|where| |where|
ORDER BY ORDER BY
ragione_sociale'; `ragione_sociale`';
foreach ($elements as $element) { 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)) { if (empty($filter)) {
$where[] = 'an_anagrafiche.deleted_at IS NULL'; $where[] = '`an_anagrafiche`.`deleted_at` IS NULL';
if (!empty($filter_agente)) { if (!empty($filter_agente)) {
$where[] = 'idagente = '.Auth::user()['idanagrafica']; $where[] = '`idagente` = '.Auth::user()['idanagrafica'];
} }
} }
if (!empty($search)) { if (!empty($search)) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`ragione_sociale` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`citta` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`provincia` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`an_anagrafiche`.`codice` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.piva LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`an_anagrafiche`.`piva` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice_fiscale LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`an_anagrafiche`.`codice_fiscale` LIKE '.prepare('%'.$search.'%');
} }
$data = AJAX::selectResults($query, $where, $filter, $search_fields, $limit, $custom); $data = AJAX::selectResults($query, $where, $filter, $search_fields, $limit, $custom);
@ -104,47 +103,47 @@ switch ($resource) {
case 'fornitori': case 'fornitori':
$id_azienda = setting('Azienda predefinita'); $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) { foreach ($elements as $element) {
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element); $filter[] = '`an_anagrafiche`.`idanagrafica`='.prepare($element);
} }
$where[] = "an_tipianagrafiche.descrizione='Fornitore'";
if (empty($filter)) { if (empty($filter)) {
$where[] = 'an_anagrafiche.deleted_at IS NULL'; $where[] = "`name` = 'Fornitore'";
$where[] = '`an_anagrafiche`.`deleted_at` IS NULL';
} }
if (!empty($search)) { if (!empty($search)) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`ragione_sociale` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`citta` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`provincia` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`an_anagrafiche`.`codice` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.piva LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`an_anagrafiche`.`piva` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice_fiscale LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`an_anagrafiche`.`codice_fiscale` LIKE '.prepare('%'.$search.'%');
} }
break; break;
case 'vettori': 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) { 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)) { if (empty($filter)) {
$where[] = 'an_anagrafiche.deleted_at IS NULL'; $where[] = '`an_anagrafiche`.`deleted_at` IS NULL';
} }
if (!empty($search)) { if (!empty($search)) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`ragione_sociale` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`citta` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`provincia` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`an_anagrafiche`.`codice` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.piva LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`an_anagrafiche`.`piva` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice_fiscale LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`an_anagrafiche`.`codice_fiscale` LIKE '.prepare('%'.$search.'%');
} }
break; break;
@ -154,31 +153,31 @@ switch ($resource) {
* - idanagrafica * - idanagrafica
*/ */
case 'agenti': 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) { 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)) { if (empty($filter)) {
$where[] = 'an_anagrafiche.deleted_at IS NULL'; $where[] = '`an_anagrafiche`.`deleted_at` IS NULL';
} }
if (!empty($search)) { if (!empty($search)) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`ragione_sociale` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`citta` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`provincia` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`an_anagrafiche`.`codice` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.piva LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`an_anagrafiche`.`piva` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice_fiscale LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`an_anagrafiche`.`codice_fiscale` LIKE '.prepare('%'.$search.'%');
} }
$results = AJAX::selectResults($query, $where, $filter, $search, $limit, $custom); $results = AJAX::selectResults($query, $where, $filter, $search, $limit, $custom);
// Evidenzia l'agente di default // Evidenzia l'agente di default
if ($superselect['idanagrafica']) { 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']; $idagente_default = $rsa[0]['idagente'];
} else { } else {
$idagente_default = 0; $idagente_default = 0;
@ -192,57 +191,57 @@ switch ($resource) {
break; break;
case 'tecnici': 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) { 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)) { 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')) { if (setting('Permetti inserimento sessioni degli altri tecnici')) {
} else { } else {
// come tecnico posso aprire attività solo a mio nome // come tecnico posso aprire attività solo a mio nome
$user = Auth::user(); $user = Auth::user();
if ($user['gruppo'] == 'Tecnici' && !empty($user['idanagrafica'])) { if ($user['gruppo'] == 'Tecnici' && !empty($user['idanagrafica'])) {
$where[] = 'an_anagrafiche.idanagrafica='.$user['idanagrafica']; $where[] = '`an_anagrafiche`.`idanagrafica`='.$user['idanagrafica'];
} }
} }
} }
if (!empty($search)) { if (!empty($search)) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`ragione_sociale` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`citta` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`provincia` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`an_anagrafiche`.`codice` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.piva LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`an_anagrafiche`.`piva` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice_fiscale LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`an_anagrafiche`.`codice_fiscale` LIKE '.prepare('%'.$search.'%');
} }
break; break;
case 'clienti_fornitori': 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) { foreach ($elements as $element) {
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element); $filter[] = '`an_anagrafiche`.`idanagrafica`='.prepare($element);
} }
$where = []; $where = [];
if (empty($filter)) { if (empty($filter)) {
$where[] = 'an_anagrafiche.deleted_at IS NULL'; $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_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)) { if (!empty($search)) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`ragione_sociale` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`citta` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`provincia` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`an_anagrafiche`.`codice` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.piva LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`an_anagrafiche`.`piva` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice_fiscale LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`an_anagrafiche`.`codice_fiscale` LIKE '.prepare('%'.$search.'%');
} }
// Aggiunta filtri di ricerca // 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 // Nota Bene: nel campo id viene specificato idtipoanagrafica-idanagrafica -> modulo Utenti e permessi, creazione nuovo utente
case 'anagrafiche': 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) { foreach ($elements as $element) {
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element); $filter[] = '`an_anagrafiche`.`idanagrafica`='.prepare($element);
} }
if (empty($filter)) { if (empty($filter)) {
$where[] = 'an_anagrafiche.deleted_at IS NULL'; $where[] = '`an_anagrafiche`.`deleted_at` IS NULL';
} }
if (!empty($search)) { if (!empty($search)) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`ragione_sociale` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`citta` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`provincia` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`an_anagrafiche`.`codice` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.piva LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`an_anagrafiche`.`piva` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice_fiscale LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`an_anagrafiche`.`codice_fiscale` LIKE '.prepare('%'.$search.'%');
} }
// Aggiunta filtri di ricerca // Aggiunta filtri di ricerca
@ -329,26 +328,26 @@ switch ($resource) {
SELECT SELECT
* *
FROM 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 UNION
SELECT SELECT
id, `id`,
lat, `lat`,
lng, `lng`,
idzona, `idzona`,
CONCAT_WS(' - ', nomesede, CONCAT(citta, IF(indirizzo!='',CONCAT(' (', indirizzo, ')'), '')) ) FROM an_sedi |where|) AS tab CONCAT_WS(' - ', `nomesede`, CONCAT(`citta`, IF(indirizzo!='',CONCAT(' (', `indirizzo`, ')'), '')) ) FROM `an_sedi` |where|) AS tab
HAVING HAVING
descrizione LIKE ".prepare('%'.$search.'%').' `descrizione` LIKE ".prepare('%'.$search.'%').'
ORDER BY ORDER BY
descrizione'; `descrizione`';
foreach ($elements as $element) { 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)) { if (!empty($search)) {
@ -362,21 +361,21 @@ switch ($resource) {
$user = Auth::user(); $user = Auth::user();
$id_azienda = setting('Azienda predefinita'); $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) { 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 // admin o utente senza una sede prefissata, avrà accesso a tutte le sedi
if (!empty($user->sedi) and !$user->is_admin) { if (!empty($user->sedi) and !$user->is_admin) {
$where[] = 'id IN('.implode(',', $user->sedi).')'; $where[] = '`id` IN('.implode(',', $user->sedi).')';
} }
if (!empty($search)) { if (!empty($search)) {
$search_fields[] = 'nomesede LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`nomesede` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`citta` LIKE '.prepare('%'.$search.'%');
} }
break; break;
@ -387,100 +386,100 @@ switch ($resource) {
*/ */
case 'referenti': case 'referenti':
if (isset($superselect['idanagrafica'])) { 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) { foreach ($elements as $element) {
$filter[] = 'an_referenti.id='.prepare($element); $filter[] = '`an_referenti`.`id`='.prepare($element);
} }
if (isset($superselect['idclientefinale'])) { 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 { } else {
$where[] = 'idanagrafica='.prepare($superselect['idanagrafica']); $where[] = '`idanagrafica`='.prepare($superselect['idanagrafica']);
} }
if (isset($superselect['idsede_destinazione'])) { if (isset($superselect['idsede_destinazione'])) {
$where[] = 'idsede='.prepare($superselect['idsede_destinazione']); $where[] = '`idsede`='.prepare($superselect['idsede_destinazione']);
} }
if (!empty($search)) { if (!empty($search)) {
$search_fields[] = 'an_referenti.nome LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`an_referenti`.`nome` LIKE '.prepare('%'.$search.'%');
} }
} }
break; break;
case 'nazioni': 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) { foreach ($elements as $element) {
$filter[] = 'id='.prepare($element); $filter[] = '`an_nazioni`.`id`='.prepare($element);
} }
if (!empty($search)) { if (!empty($search)) {
$search_fields[] = 'nome LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`an_nazioni_lang`.`name` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'iso2 LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`iso2` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'CONCAT_WS(\' - \', iso2, nome) LIKE '.prepare('%'.$search.'%'); $search_fields[] = 'CONCAT_WS(\' - \', `iso2`, `name`) LIKE '.prepare('%'.$search.'%');
} }
break; break;
case 'regioni': case 'regioni':
if (isset($superselect['id_nazione'])) { 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) { 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)) { if (!empty($search)) {
$search_fields[] = '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[] = '`an_regioni`.`iso2` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'CONCAT_WS(\' - \', an_regioni.iso2, an_regioni.nome) LIKE '.prepare('%'.$search.'%'); $search_fields[] = 'CONCAT_WS(\' - \', `an_regioni`.`iso2`, `an_regioni_lang`.`name`) LIKE '.prepare('%'.$search.'%');
} }
} }
break; break;
case 'relazioni': 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) { foreach ($elements as $element) {
$filter[] = 'id='.prepare($element); $filter[] = '`an_relazioni`.`id`='.prepare($element);
} }
if (empty($filter)) { if (empty($filter)) {
$where[] = 'an_relazioni.deleted_at IS NULL'; $where[] = '`an_relazioni`.`deleted_at` IS NULL';
} }
if (!empty($search)) { if (!empty($search)) {
$search_fields[] = 'descrizione LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`an_relazioni_lang`.`name` LIKE '.prepare('%'.$search.'%');
} }
break; break;
case 'provenienze': 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) { foreach ($elements as $element) {
$filter[] = 'id='.prepare($element); $filter[] = '`an_provenienze`.`id`='.prepare($element);
} }
if (!empty($search)) { if (!empty($search)) {
$search_fields[] = 'descrizione LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`an_provenienze_lang`.`name` LIKE '.prepare('%'.$search.'%');
} }
break; break;
case 'settori': 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) { foreach ($elements as $element) {
$filter[] = 'id='.prepare($element); $filter[] = '`an_settori`.`id`='.prepare($element);
} }
if (!empty($search)) { if (!empty($search)) {
$search_fields[] = 'descrizione LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`name` LIKE '.prepare('%'.$search.'%');
} }
break; break;

View File

@ -26,15 +26,15 @@ include_once __DIR__.'/../../core.php';
switch (post('op')) { switch (post('op')) {
case 'delete-bulk': 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) { 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'); $tipi = array_column($anagrafica, 'idtipoanagrafica');
// Se l'anagrafica non è di tipo Azienda // Se l'anagrafica non è di tipo Azienda
if (!in_array($id_tipo_azienda, $tipi)) { 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));
} }
} }

View File

@ -30,7 +30,7 @@ $is_agente = in_array($id_agente, $tipi_anagrafica);
$is_azienda = in_array($id_azienda, $tipi_anagrafica); $is_azienda = in_array($id_azienda, $tipi_anagrafica);
if (!$is_cliente && !$is_fornitore && !$is_azienda && $is_tecnico) { 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) { foreach ($ignore as $plugin) {
echo ' echo '
@ -41,7 +41,7 @@ if (!$is_cliente && !$is_fornitore && !$is_azienda && $is_tecnico) {
} }
if (!$is_cliente) { 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) { foreach ($ignore as $plugin) {
echo ' echo '
@ -530,13 +530,13 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
{[ "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$" ]}
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-md-6"> <div class="col-md-6">
{[ "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$" ]}
</div> </div>
<div class="col-md-6"> <div class="col-md-6">
@ -704,7 +704,7 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
{[ "type": "select", "multiple": "1", "label": "<?php echo tr('Tipo di anagrafica'); ?>", "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": "<?php echo tr('Tipo di anagrafica'); ?>", "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` = <?php echo 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 (`an_tipianagrafiche_lang`.`id_record` = `t`.`id` AND `an_tipianagrafiche_lang`.`id_lang` = <?php echo 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": "$idtipianagrafica$" ]}
<?php <?php
if (in_array($id_azienda, $tipi_anagrafica)) { if (in_array($id_azienda, $tipi_anagrafica)) {
echo ' echo '

View File

@ -21,19 +21,19 @@ include_once __DIR__.'/../../core.php';
use Modules\Anagrafiche\Anagrafica; use Modules\Anagrafiche\Anagrafica;
$rs = $dbo->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) { foreach ($rs as $riga) {
${'id_'.strtolower($riga['descrizione'])} = $riga['idtipoanagrafica']; ${'id_'.strtolower($riga['descrizione'])} = $riga['id'];
} }
if (isset($id_record)) { if (isset($id_record)) {
$anagrafica = Anagrafica::withTrashed()->find($id_record); $anagrafica = Anagrafica::withTrashed()->find($id_record);
$record = $dbo->fetchOne('SELECT *, $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(`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(`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 (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)); FROM `an_anagrafiche` WHERE `idanagrafica`='.prepare($id_record));
// Cast per latitudine e longitudine // Cast per latitudine e longitudine
if (!empty($record)) { if (!empty($record)) {
@ -41,6 +41,6 @@ if (isset($id_record)) {
$record['lng'] = floatval($record['lng']); $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 = $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, 'idtipoanagrafica'); $tipi_anagrafica = array_column($tipi_anagrafica, 'id');
} }

View File

@ -30,20 +30,20 @@ class Anagrafiche extends Resource implements RetrieveInterface, CreateInterface
{ {
public function retrieve($request) public function retrieve($request)
{ {
$table = 'an_anagrafiche'; $table = '`an_anagrafiche`';
$select = [ $select = [
'an_anagrafiche.*', '`an_anagrafiche`.*',
'an_nazioni.nome AS nazione', '`an_nazioni_lang`.`name` AS nazione',
]; ];
$joins[] = [ $joins[] = [
'an_nazioni', '`an_nazioni_lang`',
'an_anagrafiche.id_nazione', '`an_anagrafiche`.`id_nazione`',
'an_nazioni.id', '`an_nazioni_lang`.`name`',
]; ];
$where[] = ['an_anagrafiche.deleted_at', '=', null]; $where[] = ['`an_anagrafiche`.`deleted_at`', '=', null];
$order['an_anagrafiche.ragione_sociale'] = 'ASC'; $order['an_anagrafiche.ragione_sociale'] = 'ASC';
@ -51,18 +51,24 @@ class Anagrafiche extends Resource implements RetrieveInterface, CreateInterface
$type = 'Cliente'; $type = 'Cliente';
$joins[] = [ $joins[] = [
'an_tipianagrafiche_anagrafiche', '`an_tipianagrafiche_anagrafiche`',
'an_anagrafiche.idanagrafica', '`an_anagrafiche`.`idanagrafica`',
'an_tipianagrafiche_anagrafiche.idanagrafica', '`an_tipianagrafiche_anagrafiche`.`idanagrafica`',
]; ];
$joins[] = [ $joins[] = [
'an_tipianagrafiche', '`an_tipianagrafiche`',
'an_tipianagrafiche_anagrafiche.idtipoanagrafica', '`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica`',
'an_tipianagrafiche.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 [ return [

View File

@ -22,6 +22,7 @@ namespace Modules\Anagrafiche;
use Common\SimpleModelTrait; use Common\SimpleModelTrait;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
use Modules\Anagrafiche\Tipo as TipoAnagrafica;
use Modules\Contratti\Contratto; use Modules\Contratti\Contratto;
use Modules\DDT\DDT; use Modules\DDT\DDT;
use Modules\Fatture\Fattura; use Modules\Fatture\Fattura;
@ -88,10 +89,10 @@ class Anagrafica extends Model
public static function fromTipo($type) 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) { $anagrafiche = self::whereHas('tipi', function ($query) use ($tipologia) {
$query->where('an_tipianagrafiche.idtipoanagrafica', '=', $tipologia->id); $query->where('`an_tipianagrafiche`.`id`', '=', $tipologia->id);
}); });
return $anagrafiche; return $anagrafiche;
@ -155,7 +156,7 @@ class Anagrafica extends Model
public function setTipologieAttribute(array $tipologie) public function setTipologieAttribute(array $tipologie)
{ {
if ($this->isAzienda()) { if ($this->isAzienda()) {
$tipologie[] = Tipo::where('descrizione', 'Azienda')->first()->id; $tipologie[] = (new TipoAnagrafica())->getByName('Azienda')->id_record;
} }
$tipologie = array_clean($tipologie); $tipologie = array_clean($tipologie);
@ -167,7 +168,7 @@ class Anagrafica extends Model
$diff = $actual->diff($previous); $diff = $actual->diff($previous);
foreach ($diff as $tipo) { foreach ($diff as $tipo) {
$method = 'fix'.$tipo->descrizione; $method = 'fix'.$tipo->name;
if (method_exists($this, $method)) { if (method_exists($this, $method)) {
self::$method($this); 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 * @return bool
*/ */
public function isTipo($type) public function isTipo($type)
{ {
return $this->tipi()->get()->search(function ($item, $key) use ($type) { return $this->tipi()->get()->search(function ($item, $key) use ($type) {
return $item->descrizione == $type; return (TipoAnagrafica::find($item->id))->name == $type;
}) !== false; }) !== false;
} }
public function delete() public function delete()
@ -279,7 +281,7 @@ class Anagrafica extends Model
public function tipi() 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() public function sedi()

View File

@ -126,7 +126,7 @@ class CSV extends CSVExporter
'label' => 'ID Pagamento', 'label' => 'ID Pagamento',
], ],
[ [
'field' => 'idtipoanagrafica', 'field' => 'id',
'label' => 'Tipo', 'label' => 'Tipo',
], ],
[ [

View File

@ -21,6 +21,7 @@ namespace Modules\Anagrafiche\Import;
use Importer\CSVImporter; use Importer\CSVImporter;
use Modules\Anagrafiche\Anagrafica; use Modules\Anagrafiche\Anagrafica;
use Modules\Anagrafiche\Nazione;
/** /**
* Struttura per la gestione delle operazioni di importazione (da CSV) delle Anagrafiche. * 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']); $tipi_selezionati = explode(',', $record['idtipoanagrafica']);
foreach ($tipi_selezionati as $tipo) { 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 // Creo il tipo anagrafica se non esiste
if (empty($tipo_anagrafica)) { if (empty($tipo_anagrafica)) {
$database->insert('an_tipianagrafiche', [ $id_tipoanagrafica = database()->query('INSERT INTO `an_tipianagrafiche` (`id`, `default`) VALUES (NULL, `1`)');
'descrizione' => $tipo, $database->insert('an_tipianagrafiche_lang', [
])['idtipoanagrafica']; '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; $tipologie[] = $tipo_anagrafica;
@ -275,7 +279,7 @@ class CSV extends CSVImporter
// Fix per campi con contenuti derivati da query implicite // Fix per campi con contenuti derivati da query implicite
if (!empty($record['id_nazione'])) { 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 { } else {
unset($record['id_nazione']); unset($record['id_nazione']);
} }
@ -284,11 +288,14 @@ class CSV extends CSVImporter
$id_settore = ''; $id_settore = '';
if (!empty($record['id_settore'])) { if (!empty($record['id_settore'])) {
$settore = $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)) { if (empty($id_settore)) {
$id_settore = $database->insert('an_settori', [ $id_settore = database()->query('INSERT INTO `an_settori` (`id`, `created_at`, `updated_at`) VALUES (NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)');
'descrizione' => $settore, $database->insert('an_settori_lang', [
'id_lang' => setting('Lingua'),
'id_record' => $id_settore,
'name' => $settore,
])['id']; ])['id'];
} }
} }

View File

@ -32,4 +32,34 @@ class Nazione extends Model
{ {
return $this->hasMany(Anagrafica::class, 'id_nazione'); 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();
}
} }

View File

@ -27,28 +27,39 @@ class Tipo extends Model
use SimpleModelTrait; use SimpleModelTrait;
protected $table = 'an_tipianagrafiche'; 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() 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();
} }
} }

View File

@ -41,7 +41,7 @@ class Articolo extends Model
protected $table = 'mg_articoli'; 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(); $model = new static();

View File

@ -466,7 +466,7 @@ class CSV extends CSVImporter
if ($dettagli['dir']) { if ($dettagli['dir']) {
$tipo = Tipo::where('descrizione', $dettagli['dir'])->first(); $tipo = Tipo::where('descrizione', $dettagli['dir'])->first();
$tipi = $anagrafica->tipi->pluck('idtipoanagrafica')->toArray(); $tipi = $anagrafica->tipi->pluck('id')->toArray();
$tipi[] = $tipo->id; $tipi[] = $tipo->id;

View File

@ -16,7 +16,7 @@ echo '
// Tecnico // Tecnico
echo ' echo '
<div class="col-md-6"> <div class="col-md-6">
{[ "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.'" ]}
</div>'; </div>';
// Data di partenza // Data di partenza

View File

@ -24,21 +24,27 @@ include_once __DIR__.'/../../core.php';
// Individuazione dati selezionabili // Individuazione dati selezionabili
// Stati interventi // 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
$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
$tecnici_disponibili = $dbo->fetchArray("SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale, colore FROM an_anagrafiche $tecnici_disponibili = $dbo->fetchArray('SELECT
INNER JOIN `an_anagrafiche`.`idanagrafica` AS id, `ragione_sociale`, `colore`
an_tipianagrafiche_anagrafiche ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica FROM
INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica `an_anagrafiche`
LEFT OUTER JOIN in_interventi_tecnici ON in_interventi_tecnici.idtecnico = an_anagrafiche.idanagrafica INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica`
INNER JOIN in_interventi ON in_interventi_tecnici.idintervento=in_interventi.id INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche`.`id`
WHERE an_anagrafiche.deleted_at IS NULL AND an_tipianagrafiche.descrizione='Tecnico' ".Modules::getAdditionalsQuery('Interventi', null, false).' LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id`=`an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang`='.prepare(setting('Lingua')).")
GROUP BY an_anagrafiche.idanagrafica LEFT JOIN `in_interventi_tecnici` ON `in_interventi_tecnici`.`idtecnico` = `an_anagrafiche`.`idanagrafica`
ORDER BY ragione_sociale ASC'); 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
$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'); $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');

View File

@ -917,7 +917,7 @@ switch ($op) {
// Aggiunta tipologia cliente se necessario // Aggiunta tipologia cliente se necessario
if (!$anagrafica->isTipo('Cliente')) { if (!$anagrafica->isTipo('Cliente')) {
$tipo_cliente = TipoAnagrafica::where('descrizione', 'Cliente')->first(); $tipo_cliente = TipoAnagrafica::where('descrizione', 'Cliente')->first();
$tipi = $anagrafica->tipi->pluck('idtipoanagrafica')->toArray(); $tipi = $anagrafica->tipi->pluck('id')->toArray();
$tipi[] = $tipo_cliente->id; $tipi[] = $tipo_cliente->id;
$anagrafica->tipologie = $tipi; $anagrafica->tipologie = $tipi;
@ -1045,7 +1045,7 @@ switch ($op) {
// Aggiunta tipologia cliente se necessario // Aggiunta tipologia cliente se necessario
if (!$azienda->isTipo('Cliente')) { if (!$azienda->isTipo('Cliente')) {
$tipo_cliente = TipoAnagrafica::where('descrizione', 'Cliente')->first(); $tipo_cliente = TipoAnagrafica::where('descrizione', 'Cliente')->first();
$tipi = $azienda->tipi->pluck('idtipoanagrafica')->toArray(); $tipi = $azienda->tipi->pluck('id')->toArray();
$tipi[] = $tipo_cliente->id; $tipi[] = $tipo_cliente->id;
$azienda->tipologie = $tipi; $azienda->tipologie = $tipi;

View File

@ -69,7 +69,7 @@ if ($module->name == 'Fatture di vendita' && $services_enable) {
$is_estera = false; $is_estera = false;
if (setting('Rimuovi avviso fatture estere')) { 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) { if ($documento->data <= $data_limite_invio && !$is_estera) {

View File

@ -699,7 +699,7 @@ class Fattura extends Document
return $result; return $result;
} }
public function replicate(array $except = null) public function replicate(?array $except = null)
{ {
$new = parent::replicate($except); $new = parent::replicate($except);
$now = Carbon::now(); $now = Carbon::now();

View File

@ -174,7 +174,7 @@ class CSV extends CSVImporter
// Verifica il tecnico e inserisce la sessione // Verifica il tecnico e inserisce la sessione
$anagrafica_t = Anagrafica::where('ragione_sociale', $record['tecnico'])->first(); $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(); $tecnico = TipoAnagrafica::where('descrizione', 'Tecnico')->first();
if ($tipo = $tecnico['idtipoanagrafica']) { if ($tipo = $tecnico['idtipoanagrafica']) {

View File

@ -35,14 +35,18 @@ switch ($resource) {
$destinatari = collect(); $destinatari = collect();
// Gestione anagrafiche come destinatari // Gestione anagrafiche come destinatari
$query = "SELECT CONCAT('anagrafica_', an_anagrafiche.idanagrafica) AS id, $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, 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 `an_tipianagrafiche_lang`.`name` AS optgroup
FROM an_anagrafiche FROM
INNER JOIN an_tipianagrafiche_anagrafiche ON an_anagrafiche.idanagrafica = an_tipianagrafiche_anagrafiche.idanagrafica `an_anagrafiche`
INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `an_tipianagrafiche_anagrafiche`.`idanagrafica`
WHERE an_anagrafiche.deleted_at IS NULL AND an_anagrafiche.enable_newsletter = 1 AND 1=1 INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` = `an_tipianagrafiche`.`id`
ORDER BY `optgroup` ASC, ragione_sociale ASC"; 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, [ $query = str_replace('1=1', !empty($where) ? replace($where, [
'|nome|' => 'ragione_sociale', '|nome|' => 'ragione_sociale',
@ -52,33 +56,39 @@ switch ($resource) {
$destinatari = $destinatari->concat($anagrafiche); $destinatari = $destinatari->concat($anagrafiche);
// Gestione sedi come destinatari // Gestione sedi come destinatari
$query = "SELECT CONCAT('sede_', an_sedi.id) AS id, $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, 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 'Sedi' AS optgroup
FROM an_sedi FROM
INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = an_sedi.idanagrafica `an_sedi`
WHERE an_anagrafiche.deleted_at IS NULL AND an_anagrafiche.enable_newsletter = 1 AND 1=1 INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `an_sedi`.`idanagrafica`
ORDER BY `optgroup` ASC, ragione_sociale ASC"; 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, [ $query = str_replace('1=1', !empty($where) ? replace($where, [
'|nome|' => 'nomesede LIKE '.prepare('%'.$search.'%').' OR ragione_sociale', '|nome|' => '`nomesede` LIKE '.prepare('%'.$search.'%').' OR `ragione_sociale`',
'|table|' => 'an_sedi', '|table|' => '`an_sedi`',
]) : '', $query); ]) : '', $query);
$sedi = $database->fetchArray($query); $sedi = $database->fetchArray($query);
$destinatari = $destinatari->concat($sedi); $destinatari = $destinatari->concat($sedi);
// Gestione referenti come destinatari // Gestione referenti come destinatari
$query = "SELECT CONCAT('referente_', an_referenti.id) AS id, $query = "SELECT CONCAT('referente_', `an_referenti`.`id`) AS id,
CONCAT(an_anagrafiche.ragione_sociale, ' (', an_referenti.nome, ') [', an_referenti.email, ']') AS text, CONCAT(`an_anagrafiche`.`ragione_sociale`, ' (', `an_referenti`.`nome`, ') [', `an_referenti`.`email`, ']') AS text,
'Referenti' AS optgroup 'Referenti' AS optgroup
FROM an_referenti FROM
INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = an_referenti.idanagrafica `an_referenti`
WHERE an_anagrafiche.deleted_at IS NULL AND an_anagrafiche.enable_newsletter = 1 AND 1=1 INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `an_referenti`.`idanagrafica`
ORDER BY `optgroup` ASC, ragione_sociale ASC"; 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, [ $query = str_replace('1=1', !empty($where) ? replace($where, [
'|nome|' => 'an_referenti.nome LIKE '.prepare('%'.$search.'%').' OR ragione_sociale', '|nome|' => '`an_referenti`.`nome` LIKE '.prepare('%'.$search.'%').' OR ragione_sociale',
'|table|' => 'an_anagrafiche', '|table|' => '`an_anagrafiche`',
]) : '', $query); ]) : '', $query);
$referenti = $database->fetchArray($query); $referenti = $database->fetchArray($query);
$destinatari = $destinatari->concat($referenti); $destinatari = $destinatari->concat($referenti);
@ -88,18 +98,18 @@ switch ($resource) {
break; break;
case 'liste_newsletter': 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) { foreach ($elements as $element) {
$filter[] = 'id='.prepare($element); $filter[] = '`id`='.prepare($element);
} }
if (empty($filter)) { if (empty($filter)) {
$where[] = 'deleted_at IS NULL'; $where[] = '`deleted_at` IS NULL';
} }
if (!empty($search)) { if (!empty($search)) {
$search_fields[] = 'name LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`name` LIKE '.prepare('%'.$search.'%');
} }
// Aggiunta filtri di ricerca // Aggiunta filtri di ricerca

View File

@ -71,7 +71,7 @@ foreach ($destinatari_filtrati as $destinatario) {
$descrizione .= ' ['.$origine->nome.']'; $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 = [ $riga = [
Modules::link('Anagrafiche', $anagrafica->id, $descrizione), Modules::link('Anagrafiche', $anagrafica->id, $descrizione),

View File

@ -160,8 +160,10 @@ if (!empty($interventi)) {
</tr>'; </tr>';
// Raggruppamento per articolo con lo stesso prezzo // Raggruppamento per articolo con lo stesso prezzo
$ricavo = ($articolo->imponibile - $articolo->sconto) / $articolo->qta; if ($articolo->qta) {
$costo = $articolo->spesa / $articolo->qta; $ricavo = ($articolo->imponibile - $articolo->sconto) / $articolo->qta;
$costo = $articolo->spesa / $articolo->qta;
}
$descrizione = $articolo->articolo->codice.' - '.$articolo->articolo->descrizione; $descrizione = $articolo->articolo->codice.' - '.$articolo->articolo->descrizione;
$materiali_art[$descrizione][$ricavo][$costo]['id'] = $articolo->articolo->id; $materiali_art[$descrizione][$ricavo][$costo]['id'] = $articolo->articolo->id;

View File

@ -185,7 +185,7 @@ class Mastrino extends Model
/** /**
* Funzione dedicata alla distribuzione del totale pagato del movimento nelle relative scadenze associate. * 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; $is_nota = false;
$documento = $documento ?: $scadenza->documento; $documento = $documento ?: $scadenza->documento;

View File

@ -36,7 +36,7 @@ class Movimento extends Model
'dare', '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(); $model = new static();

View File

@ -25,8 +25,9 @@ switch (filter('op')) {
$colore = filter('colore'); $colore = filter('colore');
if (isset($descrizione)) { if (isset($descrizione)) {
if ($dbo->fetchNum('SELECT * FROM `an_provenienze` WHERE `descrizione`='.prepare($descrizione).' AND `id`!='.prepare($id_record)) == 0) { 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` SET `descrizione`='.prepare($descrizione).', `colore`='.prepare($colore).' WHERE `id`='.prepare($id_record)); $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.')); flash()->info(tr('Salvataggio completato.'));
} else { } else {
flash()->error(tr("E' già presente una provenienza _NAME_.", [ flash()->error(tr("E' già presente una provenienza _NAME_.", [
@ -44,10 +45,10 @@ switch (filter('op')) {
$colore = filter('colore'); $colore = filter('colore');
if (isset($descrizione)) { if (isset($descrizione)) {
if ($dbo->fetchNum('SELECT * FROM `an_provenienze` WHERE `descrizione`='.prepare($descrizione)) == 0) { 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` (`descrizione`, `colore`) VALUES ('.prepare($descrizione).', '.prepare($colore).')'); $dbo->query('INSERT INTO `an_provenienze` (`colore`) VALUES ('.prepare($colore).')');
$id_record = $dbo->lastInsertedID(); $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()) { if (isAjaxRequest()) {
echo json_encode(['id' => $id_record, 'text' => $descrizione]); echo json_encode(['id' => $id_record, 'text' => $descrizione]);

View File

@ -32,7 +32,7 @@ include_once __DIR__.'/../../core.php';
<div class="panel-body"> <div class="panel-body">
<div class="row"> <div class="row">
<div class="col-md-9"> <div class="col-md-9">
{[ "type": "text", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1, "value": "$descrizione$" ]} {[ "type": "text", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1, "value": "$name$" ]}
</div> </div>
<div class="col-md-3"> <div class="col-md-3">

View File

@ -20,5 +20,5 @@
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
if (isset($id_record)) { 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));
} }

View File

@ -26,8 +26,9 @@ switch (filter('op')) {
$is_bloccata = filter('is_bloccata'); $is_bloccata = filter('is_bloccata');
if (isset($descrizione)) { if (isset($descrizione)) {
if ($dbo->fetchNum('SELECT * FROM `an_relazioni` WHERE `descrizione`='.prepare($descrizione).' AND `id`!='.prepare($id_record)) == 0) { 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 `descrizione`='.prepare($descrizione).', `colore`='.prepare($colore).', `is_bloccata`='.prepare($is_bloccata).' WHERE `id`='.prepare($id_record)); $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.')); flash()->info(tr('Salvataggio completato.'));
} else { } else {
flash()->error(tr("E' già presente una relazione '_NAME_'.", [ flash()->error(tr("E' già presente una relazione '_NAME_'.", [
@ -46,10 +47,10 @@ switch (filter('op')) {
$is_bloccata = filter('is_bloccata'); $is_bloccata = filter('is_bloccata');
if (isset($descrizione)) { if (isset($descrizione)) {
if ($dbo->fetchNum('SELECT * FROM `an_relazioni` WHERE `descrizione`='.prepare($descrizione)) == 0) { 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` (`descrizione`, `colore`, `is_bloccata` ) VALUES ('.prepare($descrizione).', '.prepare($colore).', '.prepare($is_bloccata).' )'); $dbo->query('INSERT INTO `an_relazioni` (`colore`, `is_bloccata`) VALUES ('.prepare($colore).', '.prepare($is_bloccata).' )');
$id_record = $dbo->lastInsertedID(); $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()) { if (isAjaxRequest()) {
echo json_encode(['id' => $id_record, 'text' => $descrizione]); echo json_encode(['id' => $id_record, 'text' => $descrizione]);
@ -70,7 +71,7 @@ switch (filter('op')) {
break; break;
case 'delete': 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!', [ flash()->info(tr('Relazione _NAME_ eliminata con successo!', [
'_NAME_' => $descrizione, '_NAME_' => $descrizione,
])); ]));

View File

@ -32,7 +32,7 @@ include_once __DIR__.'/../../core.php';
<div class="panel-body"> <div class="panel-body">
<div class="row"> <div class="row">
<div class="col-md-6"> <div class="col-md-6">
{[ "type": "text", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1, "value": "$descrizione$" ]} {[ "type": "text", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1, "value": "$name$" ]}
</div> </div>
<div class="col-md-3"> <div class="col-md-3">

View File

@ -20,5 +20,5 @@
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
if (isset($id_record)) { 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));
} }

View File

@ -42,7 +42,7 @@ switch (post('op')) {
$tipo = post('tipo'); $tipo = post('tipo');
$descrizione = post('descrizione'); $descrizione = post('descrizione');
$iddocumento = post('iddocumento') ?: 0; $iddocumento = post('iddocumento') ?: 0;
if (!empty($iddocumento)){ if (!empty($iddocumento)) {
$scadenze = database()->table('co_scadenziario')->where('iddocumento', '=', $iddocumento)->orderBy('scadenza')->get(); $scadenze = database()->table('co_scadenziario')->where('iddocumento', '=', $iddocumento)->orderBy('scadenza')->get();
} }
$totale_pagato = 0; $totale_pagato = 0;

View File

@ -25,8 +25,8 @@ switch (filter('op')) {
$colore = filter('colore'); $colore = filter('colore');
if (isset($descrizione)) { if (isset($descrizione)) {
if ($dbo->fetchNum('SELECT * FROM `an_settori` WHERE `descrizione`='.prepare($descrizione).' AND `id`!='.prepare($id_record)) == 0) { 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` SET `descrizione`='.prepare($descrizione).' WHERE `id`='.prepare($id_record)); $dbo->query('UPDATE `an_settori_lang` SET `name`='.prepare($descrizione).' WHERE `id_record`='.prepare($id_record));
flash()->info(tr('Salvataggio completato.')); flash()->info(tr('Salvataggio completato.'));
} else { } else {
flash()->error(tr("E' già presente il settore merceologico _NAME_.", [ flash()->error(tr("E' già presente il settore merceologico _NAME_.", [
@ -44,10 +44,10 @@ switch (filter('op')) {
$colore = filter('colore'); $colore = filter('colore');
if (isset($descrizione)) { if (isset($descrizione)) {
if ($dbo->fetchNum('SELECT * FROM `an_settori` WHERE `descrizione`='.prepare($descrizione)) == 0) { 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` (`descrizione`) VALUES ('.prepare($descrizione).')'); $dbo->query('INSERT INTO `an_settori` (`id`, `created_at`, `updated_at`) VALUES (NULL, NOW(), NOW())');
$id_record = $dbo->lastInsertedID(); $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()) { if (isAjaxRequest()) {
echo json_encode(['id' => $id_record, 'text' => $descrizione]); echo json_encode(['id' => $id_record, 'text' => $descrizione]);

View File

@ -32,7 +32,7 @@ include_once __DIR__.'/../../core.php';
<div class="panel-body"> <div class="panel-body">
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
{[ "type": "text", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1, "value": "$descrizione$" ]} {[ "type": "text", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1, "value": "$name$" ]}
</div> </div>
</div> </div>
</div> </div>

View File

@ -20,5 +20,5 @@
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
if (isset($id_record)) { 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));
} }

View File

@ -416,20 +416,25 @@ $(document).ready(function() {
</script>'; </script>';
// Interventi per tecnico // Interventi per tecnico
$tecnici = $dbo->fetchArray("SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale, colore FROM an_anagrafiche $tecnici = $dbo->fetchArray('SELECT `an_anagrafiche`.`idanagrafica` AS id, `ragione_sociale`, `colore`
INNER JOIN FROM
an_tipianagrafiche_anagrafiche ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica `an_anagrafiche`
INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica`
LEFT OUTER JOIN in_interventi_tecnici ON in_interventi_tecnici.idtecnico = an_anagrafiche.idanagrafica INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche`.`id`
INNER JOIN in_interventi ON in_interventi_tecnici.idintervento=in_interventi.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_tipianagrafiche.descrizione='Tecnico' LEFT JOIN `in_interventi_tecnici` ON `in_interventi_tecnici`.`idtecnico` = `an_anagrafiche`.`idanagrafica`
GROUP BY an_anagrafiche.idanagrafica INNER JOIN `in_interventi` ON `in_interventi_tecnici`.`idintervento`=`in_interventi`.`id`
ORDER BY ragione_sociale ASC"); WHERE
`an_anagrafiche`.`deleted_at` IS NULL AND `an_tipianagrafiche_lang`.`name`='Tecnico'
GROUP BY
`an_anagrafiche`.`idanagrafica`
ORDER BY
`ragione_sociale` ASC");
$dataset = ''; $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) { 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); $sessioni = Stats::monthly($sessioni, $start, $end);
@ -535,23 +540,55 @@ $(document).ready(function() {
$dataset = ''; $dataset = '';
$nuovi_clienti = $dbo->fetchArray('SELECT COUNT(*) AS result, GROUP_CONCAT(an_anagrafiche.ragione_sociale, "<br>") AS ragioni_sociali, YEAR(an_anagrafiche.created_at) AS year, MONTH(an_anagrafiche.created_at) AS month FROM an_anagrafiche $nuovi_clienti = $dbo->fetchArray('SELECT
INNER JOIN an_tipianagrafiche_anagrafiche ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica COUNT(*) AS result,
INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica GROUP_CONCAT(`an_anagrafiche`.`ragione_sociale`, "<br>") AS ragioni_sociali,
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'); 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, "<br>") AS ragioni_sociali, YEAR(an_anagrafiche.created_at) AS year, MONTH(an_anagrafiche.created_at) AS month FROM an_anagrafiche $nuovi_fornitori = $dbo->fetchArray('SELECT
INNER JOIN an_tipianagrafiche_anagrafiche ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica COUNT(*) AS result,
INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica GROUP_CONCAT(`an_anagrafiche`.`ragione_sociale`, "<br>") AS ragioni_sociali,
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'); 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 // 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, "<br>") AS ragioni_sociali, YEAR(an_anagrafiche.created_at) AS year, MONTH(an_anagrafiche.created_at) AS month FROM an_anagrafiche $clienti_acquisiti = $dbo->fetchArray('SELECT
INNER JOIN co_documenti ON an_anagrafiche.idanagrafica = co_documenti.idanagrafica COUNT(*) AS result,
INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id GROUP_CONCAT(`an_anagrafiche`.`ragione_sociale`, "<br>") AS ragioni_sociali,
INNER JOIN an_tipianagrafiche_anagrafiche ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica YEAR(`an_anagrafiche`.`created_at`) AS year,
INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica MONTH(`an_anagrafiche`.`created_at`) AS month
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'); 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 // Random color
$background = '#'.dechex(rand(256, 16777215)); $background = '#'.dechex(rand(256, 16777215));

View File

@ -28,7 +28,7 @@ switch (post('op')) {
// Nome accettato // Nome accettato
if (!in_array($descrizione, $block)) { 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!')); flash()->info(tr('Informazioni salvate correttamente!'));
} else { } else {
// Nome non consentito // Nome non consentito
@ -42,22 +42,22 @@ switch (post('op')) {
if (!empty($descrizione)) { if (!empty($descrizione)) {
// Verifico che il nome non sia duplicato // 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) { if (count($rs) > 0) {
flash()->error(tr('Nome già esistente!')); flash()->error(tr('Nome già esistente!'));
} else { } else {
$query = 'INSERT INTO an_tipianagrafiche (descrizione) VALUES ('.prepare($descrizione).')'; $dbo->query('INSERT INTO `an_tipianagrafiche` (`id`) VALUES (NULL)');
$dbo->query($query);
$id_record = $dbo->lastInsertedID(); $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!')); flash()->info(tr('Nuovo tipo di anagrafica aggiunto!'));
} }
} }
break; break;
case 'delete': 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); $dbo->query($query);
flash()->info(tr('Tipo di anagrafica eliminato!')); flash()->info(tr('Tipo di anagrafica eliminato!'));

View File

@ -51,7 +51,7 @@ if (!empty($record['default'])) {
<div class="row"> <div class="row">
<div class="col-md-6"> <div class="col-md-6">
{[ "type": "text", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1, "value": "$descrizione$", "extra": "<?php echo $attr; ?>" ]} {[ "type": "text", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1, "value": "$name$", "extra": "<?php echo $attr; ?>" ]}
</div> </div>
</div> </div>

View File

@ -20,5 +20,5 @@
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
if (isset($id_record)) { 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));
} }

View File

@ -21,16 +21,16 @@ include_once __DIR__.'/../../../core.php';
switch ($resource) { switch ($resource) {
case 'anagrafiche_utenti': 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) { foreach ($elements as $element) {
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element); $filter[] = '`an_anagrafiche`.`idanagrafica`='.prepare($element);
} }
if (!empty($search)) { 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)) { if (!empty($search_fields)) {
@ -64,22 +64,26 @@ switch ($resource) {
break; break;
case 'utenti': 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 $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 FROM
LEFT JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `zz_users`.`idanagrafica` `zz_users`
INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` LEFT JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `zz_users`.`idanagrafica`
INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica`
|where| ORDER BY `optgroup` ASC"; 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) { foreach ($elements as $element) {
$filter[] = 'zz_users.id='.prepare($element); $filter[] = '`zz_users`.`id`='.prepare($element);
} }
if (!empty($search)) { if (!empty($search)) {
$search_fields[] = 'an_anagrafiche.ragione_sociale LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`an_anagrafiche`.`ragione_sociale` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'zz_users.username LIKE '.prepare('%'.$search.'%'); $search_fields[] = '`zz_users`.`username` LIKE '.prepare('%'.$search.'%');
} }
if (!empty($search_fields)) { if (!empty($search_fields)) {

View File

@ -19,7 +19,7 @@
include_once __DIR__.'/../../core.php'; 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 ' echo '
<div class="panel panel-primary"> <div class="panel panel-primary">

View File

@ -35,7 +35,7 @@ class Login extends Resource implements CreateInterface
$token = auth()->getToken(); $token = auth()->getToken();
// Informazioni da restituire tramite l'API // 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'], ':id' => $user['id'],
]); ]);

View File

@ -22,6 +22,7 @@ namespace Plugins\ExportFE;
use FluidXml\FluidXml; use FluidXml\FluidXml;
use GuzzleHttp\Client; use GuzzleHttp\Client;
use Modules\Anagrafiche\Anagrafica; use Modules\Anagrafiche\Anagrafica;
use Modules\Anagrafiche\Nazione;
use Modules\Anagrafiche\Sede; use Modules\Anagrafiche\Sede;
use Modules\Banche\Banca; use Modules\Banche\Banca;
use Modules\Fatture\Fattura; use Modules\Fatture\Fattura;
@ -313,7 +314,7 @@ class FatturaElettronica
])); ]));
// Aggiornamento effettivo // Aggiornamento effettivo
$result=database()->update('co_documenti', [ $result = database()->update('co_documenti', [
'progressivo_invio' => $this->getDocumento()['progressivo_invio'], 'progressivo_invio' => $this->getDocumento()['progressivo_invio'],
'codice_stato_fe' => 'GEN', 'codice_stato_fe' => 'GEN',
'id_ricevuta_principale' => null, 'id_ricevuta_principale' => null,
@ -1118,8 +1119,7 @@ class FatturaElettronica
} }
if (!empty($sede['id_nazione'])) { 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']; $result['IndirizzoResa']['Nazione'] = $rs_nazione['iso2'];
} }
} }

View File

@ -20,6 +20,7 @@
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
use Carbon\Carbon; use Carbon\Carbon;
use Modules\Anagrafiche\Tipo;
use Modules\DDT\DDT; use Modules\DDT\DDT;
use Modules\Fatture\Fattura; use Modules\Fatture\Fattura;
use Modules\Fatture\Stato; use Modules\Fatture\Stato;
@ -173,12 +174,13 @@ switch (filter('op')) {
} }
// Aggiorno la tipologia di anagrafica fornitore // Aggiorno la tipologia di anagrafica fornitore
$anagrafica = $database->fetchOne('SELECT idanagrafica FROM co_documenti WHERE co_documenti.id='.prepare($id_fattura)); $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'])); $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 // Se non trovo corrispondenza aggiungo all'anagrafica la tipologia fornitore
if (empty($rs_t)) { 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 // Processo il file ricevuto

View File

@ -206,7 +206,7 @@ class FatturaElettronica
$tipologia = TipoAnagrafica::where('descrizione', $type)->first(); $tipologia = TipoAnagrafica::where('descrizione', $type)->first();
$anagrafica = Anagrafica::whereHas('tipi', function ($query) use ($tipologia) { $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'])) { 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 // Se non trovo l'anagrafica tra i fornitori, provo a ricercarla anche tra i clienti
if (empty($anagrafica->first())) { if (empty($anagrafica->first())) {
$type = 'Cliente'; $type = 'Cliente';
$tipologia = (new TipoAnagrafica())->getByName($type)->id_record;
$tipologia = TipoAnagrafica::where('descrizione', $type)->first();
$anagrafica = Anagrafica::whereHas('tipi', function ($query) use ($tipologia) { $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'])) { if (!empty($info['partita_iva']) && !empty($info['codice_fiscale'])) {

View File

@ -162,7 +162,7 @@ class Gestore
$this->debito_diretto = new DirectDebitCBI(); $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; $documento = $scadenza->documento;
$controparte = $scadenza->anagrafica; $controparte = $scadenza->anagrafica;

View File

@ -34,7 +34,7 @@ echo '
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
{[ "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" ]}
</div> </div>
<div class="col-md-4"> <div class="col-md-4">

View File

@ -33,7 +33,7 @@ echo '
</div> </div>
<div class="col-md-4"> <div class="col-md-4">
{[ "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" ]}
</div> </div>
<div class="col-md-4"> <div class="col-md-4">

View File

@ -19,6 +19,8 @@
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
use Modules\Anagrafiche\Nazione;
// id_record = sede // id_record = sede
if (isset($id_record)) { if (isset($id_record)) {
$record = $dbo->fetchOne('SELECT * FROM an_sedi WHERE id='.prepare($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 // id_parent = anagrafica
if (isset($id_parent)) { if (isset($id_parent)) {
$record['tipo_anagrafica'] = $dbo->fetchOne('SELECT tipo FROM an_anagrafiche WHERE an_anagrafiche.idanagrafica ='.prepare($id_parent))['tipo']; $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;
} }

View File

@ -74,8 +74,10 @@ elseif ($anagrafica->isTipo('Tecnico')) {
$interventi = Intervento::whereIn('id', array_column($interventi, 'id'))->get(); $interventi = Intervento::whereIn('id', array_column($interventi, 'id'))->get();
$totale_interventi = $interventi->sum('totale_imponibile'); $totale_interventi = $interventi->sum('totale_imponibile');
$sessioni = Sessione::whereIn('id', array_column($sessioni, 'id'))->get(); if ($sessioni){
$totale_ore_lavorate = $sessioni->sum('ore'); $sessioni = Sessione::whereIn('id', array_column($sessioni, 'id'))->get();
$totale_ore_lavorate = $sessioni->sum('ore');
}
// Ddt in uscita // Ddt in uscita
$ddt_uscita = DDT::whereBetween('data', [$start, $end]) $ddt_uscita = DDT::whereBetween('data', [$start, $end])
@ -222,15 +224,15 @@ echo '
<div class="row"> <div class="row">
<div class="col-md-4"> <div class="col-md-4">
<div class="info-box"> <div class="info-box">
<span class="info-box-icon bg-'.($sessioni->count() == 0 ? 'gray' : 'yellow').'"><i class="fa fa-wrench"></i></span> <span class="info-box-icon bg-'.(!empty($sessioni) ? 'gray' : 'yellow').'"><i class="fa fa-wrench"></i></span>
<div class="info-box-content"> <div class="info-box-content">
<span class="info-box-text pull-left">'.tr('Ore lavorate').'</span>'; <span class="info-box-text pull-left">'.tr('Ore lavorate').'</span>';
if ($anagrafica->isTipo('Cliente')) { if ($anagrafica->isTipo('Cliente')) {
echo ' echo '
'.($sessioni->count() > 0 ? '<span class="info-box-text pull-right"><a href="'.base_path().'/controller.php?id_module='.Modules::get('Interventi')['id'].'&search_Ragione-sociale='.rawurlencode($anagrafica['ragione_sociale']).'">'.tr('Visualizza').' <i class="fa fa-chevron-circle-right"></i></a></span>' : '').''; '.($sessioni ? '<span class="info-box-text pull-right"><a href="'.base_path().'/controller.php?id_module='.Modules::get('Interventi')['id'].'&search_Ragione-sociale='.rawurlencode($anagrafica['ragione_sociale']).'">'.tr('Visualizza').' <i class="fa fa-chevron-circle-right"></i></a></span>' : '').'';
} else { } else {
echo ' echo '
'.($sessioni->count() > 0 ? '<span class="info-box-text pull-right"><a href="'.base_path().'/controller.php?id_module='.Modules::get('Interventi')['id'].'&search_Tecnici='.rawurlencode($anagrafica['ragione_sociale']).'">'.tr('Visualizza').' <i class="fa fa-chevron-circle-right"></i></a></span>' : '').''; '.($sessioni ? '<span class="info-box-text pull-right"><a href="'.base_path().'/controller.php?id_module='.Modules::get('Interventi')['id'].'&search_Tecnici='.rawurlencode($anagrafica['ragione_sociale']).'">'.tr('Visualizza').' <i class="fa fa-chevron-circle-right"></i></a></span>' : '').'';
} }
echo ' echo '
<br class="clearfix"> <br class="clearfix">

View File

@ -32,13 +32,16 @@ class Clienti extends AppResource
public function getModifiedRecords($last_sync_at) public function getModifiedRecords($last_sync_at)
{ {
$parameters = []; $parameters = [];
$query = "SELECT $query = 'SELECT
an_anagrafiche.idanagrafica AS id, `an_anagrafiche`.`idanagrafica` AS id,
an_anagrafiche.updated_at `an_anagrafiche`.`updated_at`
FROM an_anagrafiche FROM
INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica = an_anagrafiche.idanagrafica `an_anagrafiche`
INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
WHERE an_tipianagrafiche.descrizione = 'Cliente' AND (an_anagrafiche.deleted_at IS NULL OR an_anagrafiche.idanagrafica IN(SELECT in_interventi.idanagrafica FROM in_interventi))"; 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 // 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'); $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) public function retrieveRecord($id)
{ {
// Gestione della visualizzazione dei dettagli del record // Gestione della visualizzazione dei dettagli del record
$query = 'SELECT an_anagrafiche.idanagrafica AS id, $query = 'SELECT `an_anagrafiche`.`idanagrafica` AS id,
an_anagrafiche.ragione_sociale, `an_anagrafiche`.`ragione_sociale`,
an_anagrafiche.tipo, `an_anagrafiche`.`tipo`,
an_anagrafiche.piva AS partita_iva, `an_anagrafiche`.`piva` AS partita_iva,
an_anagrafiche.codice_fiscale, `an_anagrafiche`.`codice_fiscale`,
an_anagrafiche.indirizzo, `an_anagrafiche`.`indirizzo`,
an_anagrafiche.indirizzo2, `an_anagrafiche`.`indirizzo2`,
an_anagrafiche.citta, `an_anagrafiche`.`citta`,
an_anagrafiche.cap, `an_anagrafiche`.`cap`,
an_anagrafiche.provincia, `an_anagrafiche`.`provincia`,
an_anagrafiche.km, `an_anagrafiche`.`km`,
IFNULL(an_anagrafiche.lat, 0.00) AS latitudine, IFNULL(`an_anagrafiche`.`lat`, 0.00) AS latitudine,
IFNULL(an_anagrafiche.lng, 0.00) AS longitudine, IFNULL(`an_anagrafiche`.`lng`, 0.00) AS longitudine,
an_nazioni.nome AS nazione, `an_nazioni_lang`.`name` AS nazione,
an_anagrafiche.fax, `an_anagrafiche`.`fax`,
an_anagrafiche.telefono, `an_anagrafiche`.`telefono`,
an_anagrafiche.cellulare, `an_anagrafiche`.`cellulare`,
an_anagrafiche.email, `an_anagrafiche`.`email`,
an_anagrafiche.sitoweb AS sito_web, `an_anagrafiche`.`sitoweb` AS sito_web,
an_anagrafiche.note, `an_anagrafiche`.`note`,
an_anagrafiche.deleted_at, `an_anagrafiche`.`deleted_at`,
IF(an_anagrafiche.deleted_at IS NULL, 0, 1) AS deleted, IF(`an_anagrafiche`.`deleted_at` IS NULL, 0, 1) AS deleted,
an_anagrafiche.idtipointervento_default AS id_tipo_intervento_default `an_anagrafiche`.`idtipointervento_default` AS id_tipo_intervento_default
FROM an_anagrafiche FROM `an_anagrafiche`
LEFT OUTER JOIN an_nazioni ON an_anagrafiche.id_nazione = an_nazioni.id LEFT JOIN `an_nazioni` ON `an_anagrafiche`.`id_nazione` = `an_nazioni`.`id`
WHERE an_anagrafiche.idanagrafica = '.prepare($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); $record = database()->fetchOne($query);

View File

@ -44,15 +44,18 @@ class Contratti extends AppResource implements RetrieveInterface
public function getModifiedRecords($last_sync_at) public function getModifiedRecords($last_sync_at)
{ {
$query = "SELECT $query = 'SELECT
DISTINCT(co_contratti.id) AS id, DISTINCT(`co_contratti`.`id`) AS id,
co_contratti.updated_at `co_contratti`.`updated_at`
FROM co_contratti FROM
INNER JOIN co_staticontratti ON co_staticontratti.id = co_contratti.idstato `co_contratti`
INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = co_contratti.idanagrafica INNER JOIN `co_staticontratti` ON `co_staticontratti`.`id` = `co_contratti`.`idstato`
INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica = an_anagrafiche.idanagrafica INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `co_contratti`.`idanagrafica`
INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
WHERE an_tipianagrafiche.descrizione = 'Cliente' AND co_staticontratti.is_pianificabile = 1 AND an_anagrafiche.deleted_at IS NULL"; 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 // Filtro per data
if ($last_sync_at) { if ($last_sync_at) {

View File

@ -47,7 +47,7 @@ class ControlloClienti extends Resource implements RetrieveInterface
// Aggiunta tipologia Cliente se non presente nell'anagrafica trovata // Aggiunta tipologia Cliente se non presente nell'anagrafica trovata
if (!empty($cliente) && !$cliente->isTipo('Cliente')) { if (!empty($cliente) && !$cliente->isTipo('Cliente')) {
$tipo_cliente = Tipo::where('descrizione', '=', 'Cliente')->first(); $tipo_cliente = Tipo::where('descrizione', '=', 'Cliente')->first();
$tipi = $cliente->tipi->pluck('idtipoanagrafica')->toArray(); $tipi = $cliente->tipi->pluck('id')->toArray();
$tipi[] = $tipo_cliente->id; $tipi[] = $tipo_cliente->id;

View File

@ -38,24 +38,25 @@ class Login extends Resource implements CreateInterface
$utente = $database->fetchOne('SELECT $utente = $database->fetchOne('SELECT
`an_anagrafiche`.`idanagrafica` AS id_anagrafica, `an_anagrafiche`.`idanagrafica` AS id_anagrafica,
`an_anagrafiche`.`ragione_sociale`, `an_anagrafiche`.`ragione_sociale`,
zz_groups.nome AS gruppo `zz_groups`.`nome` AS gruppo
FROM `zz_users` FROM `zz_users`
INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `zz_users`.`idanagrafica` 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', [ WHERE `an_anagrafiche`.`deleted_at` IS NULL AND `zz_users`.`id` = :id', [
':id' => $user['id'], ':id' => $user['id'],
]); ]);
} else { } else {
$utente = $database->fetchOne("SELECT $utente = $database->fetchOne('SELECT
`an_anagrafiche`.`idanagrafica` AS id_anagrafica, `an_anagrafiche`.`idanagrafica` AS id_anagrafica,
`an_anagrafiche`.`ragione_sociale`, `an_anagrafiche`.`ragione_sociale`,
zz_groups.nome AS gruppo `zz_groups`.`nome` AS gruppo
FROM `zz_users` FROM `zz_users`
INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `zz_users`.`idanagrafica` 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_anagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` = `an_tipianagrafiche`.`id`
INNER JOIN zz_groups ON zz_users.idgruppo=zz_groups.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.descrizione = 'Tecnico' AND `an_anagrafiche`.`deleted_at` IS NULL AND `id` = :id", [ 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'], ':id' => $user['id'],
]); ]);
} }

View File

@ -44,16 +44,21 @@ class Preventivi extends AppResource implements RetrieveInterface
public function getModifiedRecords($last_sync_at) public function getModifiedRecords($last_sync_at)
{ {
$query = "SELECT DISTINCT(co_preventivi.id) AS id, co_preventivi.updated_at FROM co_preventivi $query = "SELECT
INNER JOIN co_statipreventivi ON co_statipreventivi.id = co_preventivi.idstato DISTINCT(`co_preventivi`.`id`) AS id,
INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = co_preventivi.idanagrafica `co_preventivi`.`updated_at`
INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica = an_anagrafiche.idanagrafica FROM
INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica `co_preventivi`
WHERE an_tipianagrafiche.descrizione = 'Cliente' AND co_statipreventivi.is_pianificabile = 1 AND an_anagrafiche.deleted_at IS NULL"; 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 // Filtro per data
if ($last_sync_at) { 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); $records = database()->fetchArray($query);
@ -64,16 +69,19 @@ class Preventivi extends AppResource implements RetrieveInterface
public function retrieveRecord($id) public function retrieveRecord($id)
{ {
// Gestione della visualizzazione dei dettagli del record // Gestione della visualizzazione dei dettagli del record
$query = 'SELECT co_preventivi.id, $query = 'SELECT
co_preventivi.idanagrafica AS id_cliente, `co_preventivi`.`id`,
IF(co_preventivi.idsede = 0, NULL, co_preventivi.idsede) AS id_sede, `co_preventivi`.`idanagrafica` AS id_cliente,
co_preventivi.nome, IF(`co_preventivi`.`idsede` = 0, NULL, `co_preventivi`.`idsede`) AS id_sede,
co_preventivi.numero, `co_preventivi`.`nome`,
co_preventivi.data_bozza, `co_preventivi`.`numero`,
co_statipreventivi.descrizione AS stato `co_preventivi`.`data_bozza`,
FROM co_preventivi `co_statipreventivi`.`descrizione` AS stato
INNER JOIN co_statipreventivi ON co_statipreventivi.id = co_preventivi.idstato FROM
WHERE co_preventivi.id = '.prepare($id); `co_preventivi`
INNER JOIN `co_statipreventivi` ON `co_statipreventivi`.`id` = `co_preventivi`.`idstato`
WHERE
`co_preventivi`.`id` = '.prepare($id);
$record = database()->fetchOne($query); $record = database()->fetchOne($query);

View File

@ -31,15 +31,21 @@ class Referenti extends AppResource implements RetrieveInterface
public function getModifiedRecords($last_sync_at) public function getModifiedRecords($last_sync_at)
{ {
$query = "SELECT DISTINCT(an_referenti.id) AS id, an_referenti.updated_at FROM an_referenti $query = 'SELECT
INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = an_referenti.idanagrafica DISTINCT(`an_referenti`.`id`) AS id,
INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica = an_anagrafiche.idanagrafica `an_referenti`.`updated_at`
INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica FROM
WHERE an_tipianagrafiche.descrizione = 'Cliente' AND (an_anagrafiche.deleted_at IS NULL OR an_anagrafiche.idanagrafica IN(SELECT in_interventi.idanagrafica FROM in_interventi))"; `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 // Filtro per data
if ($last_sync_at) { 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); $records = database()->fetchArray($query);
@ -50,16 +56,18 @@ class Referenti extends AppResource implements RetrieveInterface
public function retrieveRecord($id) public function retrieveRecord($id)
{ {
// Gestione della visualizzazione dei dettagli del record // Gestione della visualizzazione dei dettagli del record
$query = 'SELECT an_referenti.id, $query = 'SELECT `an_referenti`.`id`,
idanagrafica AS id_cliente, `idanagrafica` AS id_cliente,
IF(idsede = 0, NULL, idsede) AS id_sede, IF(`idsede` = 0, NULL, `idsede`) AS id_sede,
an_referenti.nome, `an_referenti`.`nome`,
an_mansioni.nome AS mansione, `an_mansioni`.`nome` AS mansione,
telefono, `telefono`,
email `email`
FROM an_referenti FROM
LEFT JOIN an_mansioni ON an_referenti.idmansione=an_mansioni.id `an_referenti`
WHERE an_referenti.id = '.prepare($id); LEFT JOIN `an_mansioni` ON `an_referenti`.`idmansione`=`an_mansioni`.`id`
WHERE
`an_referenti`.`id` = '.prepare($id);
$record = database()->fetchOne($query); $record = database()->fetchOne($query);

View File

@ -30,15 +30,21 @@ class Sedi extends AppResource
public function getModifiedRecords($last_sync_at) public function getModifiedRecords($last_sync_at)
{ {
$query = "SELECT DISTINCT(an_sedi.id) AS id, an_sedi.updated_at FROM an_sedi $query = 'SELECT
INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = an_sedi.idanagrafica DISTINCT(`an_sedi`.`id`) AS id,
INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica = an_anagrafiche.idanagrafica `an_sedi`.`updated_at`
INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica FROM
WHERE an_tipianagrafiche.descrizione = 'Cliente' AND an_anagrafiche.deleted_at IS NULL"; `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 // Filtro per data
if ($last_sync_at) { 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); $records = database()->fetchArray($query);
@ -49,27 +55,28 @@ class Sedi extends AppResource
public function retrieveRecord($id) public function retrieveRecord($id)
{ {
// Gestione della visualizzazione dei dettagli del record // Gestione della visualizzazione dei dettagli del record
$query = 'SELECT an_sedi.id, $query = 'SELECT `an_sedi`.`id`,
an_sedi.idanagrafica AS id_cliente, `an_sedi`.`idanagrafica` AS id_cliente,
an_sedi.nomesede AS nome, `an_sedi`.`nomesede` AS nome,
an_sedi.piva AS partita_iva, `an_sedi`.`piva` AS partita_iva,
an_sedi.codice_fiscale, `an_sedi`.`codice_fiscale`,
an_sedi.indirizzo, `an_sedi`.`indirizzo`,
an_sedi.indirizzo2, `an_sedi`.`indirizzo2`,
an_sedi.citta, `an_sedi`.`citta`,
an_sedi.cap, `an_sedi`.`cap`,
an_sedi.provincia, `an_sedi`.`provincia`,
an_sedi.km, `an_sedi`.`km`,
IFNULL(an_sedi.lat, 0.00) AS latitudine, IFNULL(`an_sedi`.`lat`, 0.00) AS latitudine,
IFNULL(an_sedi.lng, 0.00) AS longitudine, IFNULL(`an_sedi`.`lng`, 0.00) AS longitudine,
an_nazioni.nome AS nazione, `an_nazioni_lang`.`name` AS nazione,
an_sedi.telefono, `an_sedi`.`telefono`,
an_sedi.cellulare, `an_sedi`.`cellulare`,
an_sedi.fax, `an_sedi`.`fax`,
an_sedi.email `an_sedi`.`email`
FROM an_sedi FROM `an_sedi`
LEFT OUTER JOIN an_nazioni ON an_sedi.id_nazione = an_nazioni.id LEFT JOIN `an_nazioni` ON `an_sedi`.`id_nazione` = `an_nazioni`.`id`
WHERE an_sedi.id = '.prepare($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); $record = database()->fetchOne($query);

View File

@ -30,11 +30,17 @@ class SediAzienda extends AppResource
public function getModifiedRecords($last_sync_at) public function getModifiedRecords($last_sync_at)
{ {
$query = "SELECT DISTINCT(an_sedi.id) AS id, an_sedi.updated_at FROM an_sedi $query = 'SELECT
INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = an_sedi.idanagrafica DISTINCT(`an_sedi`.`id`) AS id,
INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica = an_anagrafiche.idanagrafica `an_sedi`.`updated_at`
INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica FROM
WHERE an_tipianagrafiche.descrizione = 'Azienda' AND an_anagrafiche.deleted_at IS NULL"; `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 // Filtro per data
if ($last_sync_at) { if ($last_sync_at) {
@ -49,27 +55,28 @@ class SediAzienda extends AppResource
public function retrieveRecord($id) public function retrieveRecord($id)
{ {
// Gestione della visualizzazione dei dettagli del record // Gestione della visualizzazione dei dettagli del record
$query = 'SELECT an_sedi.id, $query = 'SELECT `an_sedi`.`id`,
an_sedi.idanagrafica AS id_cliente, `an_sedi`.`idanagrafica` AS id_cliente,
an_sedi.nomesede AS nome, `an_sedi`.`nomesede` AS nome,
an_sedi.piva AS partita_iva, `an_sedi`.`piva` AS partita_iva,
an_sedi.codice_fiscale, `an_sedi`.`codice_fiscale`,
an_sedi.indirizzo, `an_sedi`.`indirizzo`,
an_sedi.indirizzo2, `an_sedi`.`indirizzo2`,
an_sedi.citta, `an_sedi`.`citta`,
an_sedi.cap, `an_sedi`.`cap`,
an_sedi.provincia, `an_sedi`.`provincia`,
an_sedi.km, `an_sedi`.`km`,
IFNULL(an_sedi.lat, 0.00) AS latitudine, IFNULL(`an_sedi`.`lat`, 0.00) AS latitudine,
IFNULL(an_sedi.lng, 0.00) AS longitudine, IFNULL(`an_sedi`.`lng`, 0.00) AS longitudine,
an_nazioni.nome AS nazione, `an_nazioni_lang`.`name` AS nazione,
an_sedi.telefono, `an_sedi`.`telefono`,
an_sedi.cellulare, `an_sedi`.`cellulare`,
an_sedi.fax, `an_sedi`.`fax`,
an_sedi.email `an_sedi`.`email`
FROM an_sedi FROM `an_sedi`
LEFT OUTER JOIN an_nazioni ON an_sedi.id_nazione = an_nazioni.id LEFT JOIN `an_nazioni` ON `an_sedi`.`id_nazione` = `an_nazioni`.`id`
WHERE an_sedi.id = '.prepare($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); $record = database()->fetchOne($query);

View File

@ -367,7 +367,7 @@ abstract class Component extends Model
return $result; return $result;
} }
public function replicate(array $except = null) public function replicate(?array $except = null)
{ {
$new = parent::replicate($except); $new = parent::replicate($except);

View File

@ -72,6 +72,7 @@ class Query
$id_module = \Modules::getCurrent()['id']; $id_module = \Modules::getCurrent()['id'];
$segment = !empty(self::$segments) ? $_SESSION['module_'.$id_module]['id_segment'] : null; $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']; $is_sezionale = database()->fetchOne('SELECT `is_sezionale` FROM `zz_segments` WHERE `id` = '.prepare($segment))['is_sezionale'];
$lang = setting('Lingua');
$user = \Auth::user(); $user = \Auth::user();
@ -98,7 +99,7 @@ class Query
$date_query = !empty($filters) && !empty(self::$segments) ? ' AND ('.implode(' OR ', $filters).')' : ''; $date_query = !empty($filters) && !empty(self::$segments) ? ' AND ('.implode(' OR ', $filters).')' : '';
} }
// Sostituzione periodi temporali // Sostituzione segmenti
preg_match('|segment\((.+?)\)|', (string) $query, $matches); preg_match('|segment\((.+?)\)|', (string) $query, $matches);
$segment_name = !empty($matches[1]) ? $matches[1] : 'id_segment'; $segment_name = !empty($matches[1]) ? $matches[1] : 'id_segment';
$segment_filter = !empty($matches[0]) ? $matches[0] : 'segment'; $segment_filter = !empty($matches[0]) ? $matches[0] : 'segment';
@ -122,6 +123,9 @@ class Query
// Filtro dinamico per il modulo Giacenze sedi // Filtro dinamico per il modulo Giacenze sedi
'|giacenze_sedi_idsede|' => prepare(isset($_SESSION['giacenze_sedi']) ? $_SESSION['giacenze_sedi']['idsede'] : null), '|giacenze_sedi_idsede|' => prepare(isset($_SESSION['giacenze_sedi']) ? $_SESSION['giacenze_sedi']['idsede'] : null),
// Filtro per lingua
'|lang|' => '`id_lang` = '.prepare($lang),
]; ];
// Sostituzione dei formati // Sostituzione dei formati

View File

@ -19,6 +19,7 @@
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
use Modules\Anagrafiche\Nazione;
use Modules\Contratti\Contratto; use Modules\Contratti\Contratto;
$documento = Contratto::find($id_record); $documento = Contratto::find($id_record);
@ -52,9 +53,9 @@ if (!empty($documento->idsede)) {
$destinazione .= ' ('.$rsd[0]['provincia'].')'; $destinazione .= ' ('.$rsd[0]['provincia'].')';
} }
if (!empty($rsd[0]['id_nazione'])) { 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') { if ($nazione['iso2'] != 'IT') {
$destinazione .= ' - '.$nazione['name']; $destinazione .= ' - '.$nazione->name;
} }
} }
} }

View File

@ -19,6 +19,7 @@
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
use Modules\Anagrafiche\Nazione;
use Modules\DDT\DDT; use Modules\DDT\DDT;
$documento = DDT::find($id_record); $documento = DDT::find($id_record);
@ -70,9 +71,9 @@ if (!empty($documento['idsede_destinazione'])) {
$destinazione .= ' ('.$rsd[0]['provincia'].')'; $destinazione .= ' ('.$rsd[0]['provincia'].')';
} }
if (!empty($rsd[0]['id_nazione'])) { 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') { if ($nazione['iso2'] != 'IT') {
$destinazione .= ' - '.$nazione['name'].'<br />'; $destinazione .= ' - '.$nazione->name.'<br />';
} }
} }
if (!empty($rsd[0]['telefono'])) { if (!empty($rsd[0]['telefono'])) {
@ -107,9 +108,9 @@ if (!empty($documento['idsede_partenza'])) {
$partenza .= ' ('.$rsd[0]['provincia'].')'; $partenza .= ' ('.$rsd[0]['provincia'].')';
} }
if (!empty($rsd[0]['id_nazione'])) { 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') { if ($nazione['iso2'] != 'IT') {
$partenza .= ' - '.$nazione['name'].'<br />'; $partenza .= ' - '.$nazione->name.'<br />';
} }
} }
if (!empty($rsd[0]['telefono'])) { if (!empty($rsd[0]['telefono'])) {

View File

@ -19,6 +19,7 @@
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
use Modules\Anagrafiche\Nazione;
use Modules\Fatture\Fattura; use Modules\Fatture\Fattura;
$documento = Fattura::find($id_record); $documento = Fattura::find($id_record);
@ -91,9 +92,9 @@ if (!empty($record['idsede_destinazione'])) {
$destinazione .= ' ('.$rsd[0]['provincia'].')'; $destinazione .= ' ('.$rsd[0]['provincia'].')';
} }
if (!empty($rsd[0]['id_nazione'])) { 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') { if ($nazione['iso2'] != 'IT') {
$destinazione .= ' - '.$nazione['name']; $destinazione .= ' - '.$nazione->name;
} }
} }
} }

View File

@ -17,6 +17,8 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
use Modules\Anagrafiche\Nazione;
$replaces = []; $replaces = [];
// Retrocompatibilità // Retrocompatibilità
@ -85,9 +87,9 @@ foreach ($replace as $prefix => $values) {
$citta .= ' ('.$values['provincia'].')'; $citta .= ' ('.$values['provincia'].')';
} }
if (!empty($values['id_nazione'])) { 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') { if ($nazione['iso2'] != 'IT') {
$citta .= ' - '.$nazione['name']; $citta .= ' - '.$nazione->name;
} }
} }

View File

@ -19,6 +19,7 @@
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
use Modules\Anagrafiche\Nazione;
use Modules\Ordini\Ordine; use Modules\Ordini\Ordine;
$documento = Ordine::find($id_record); $documento = Ordine::find($id_record);
@ -52,9 +53,9 @@ if (!empty($documento->idsede)) {
$destinazione .= ' ('.$rsd[0]['provincia'].')'; $destinazione .= ' ('.$rsd[0]['provincia'].')';
} }
if (!empty($rsd[0]['id_nazione'])) { 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') { if ($nazione['iso2'] != 'IT') {
$destinazione .= ' - '.$nazione['name']; $destinazione .= ' - '.$nazione->name;
} }
} }
} }

View File

@ -19,6 +19,7 @@
include_once __DIR__.'/../../core.php'; include_once __DIR__.'/../../core.php';
use Modules\Anagrafiche\Nazione;
use Modules\Preventivi\Preventivo; use Modules\Preventivi\Preventivo;
$documento = Preventivo::find($id_record); $documento = Preventivo::find($id_record);
@ -52,9 +53,9 @@ if (!empty($documento->idsede)) {
$destinazione .= ' ('.$rsd[0]['provincia'].')'; $destinazione .= ' ('.$rsd[0]['provincia'].')';
} }
if (!empty($rsd[0]['id_nazione'])) { 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') { if ($nazione['iso2'] != 'IT') {
$destinazione .= ' - '.$nazione['name']; $destinazione .= ' - '.$nazione->name;
} }
} }
} }

256
update/2_4_55.sql Normal file
View File

@ -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', '&dollar;');
-- 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';

View File

@ -4,15 +4,20 @@ return [
'an_anagrafiche', 'an_anagrafiche',
'an_anagrafiche_agenti', 'an_anagrafiche_agenti',
'an_nazioni', 'an_nazioni',
'an_nazioni_lang',
'an_mansioni', 'an_mansioni',
'an_referenti', 'an_referenti',
'an_regioni', 'an_regioni',
'an_regioni_lang',
'an_relazioni', 'an_relazioni',
'an_relazioni_lang',
'an_provenienze', 'an_provenienze',
'an_provenienze_lang',
'an_settori', 'an_settori',
'an_sedi', 'an_sedi',
'an_tipianagrafiche', 'an_tipianagrafiche',
'an_tipianagrafiche_anagrafiche', 'an_tipianagrafiche_anagrafiche',
'an_tipianagrafiche_lang',
'an_zone', 'an_zone',
'an_pagamenti_anagrafiche', 'an_pagamenti_anagrafiche',
'an_sedi_tecnici', 'an_sedi_tecnici',