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';
use Modules\Anagrafiche\Tipo;
if (Update::isUpdateAvailable() || !$dbo->isInstalled()) {
return;
}
$has_azienda = $dbo->fetchNum("SELECT `an_anagrafiche`.`idanagrafica` FROM `an_anagrafiche`
$has_azienda = $dbo->fetchNum('SELECT `an_anagrafiche`.`idanagrafica` FROM `an_anagrafiche`
LEFT JOIN `an_tipianagrafiche_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica`
LEFT JOIN `an_tipianagrafiche` ON `an_tipianagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica`
WHERE `an_tipianagrafiche`.`descrizione` = 'Azienda' AND `an_anagrafiche`.`deleted_at` IS NULL") != 0;
LEFT JOIN `an_tipianagrafiche` ON `an_tipianagrafiche`.`id`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica`
LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id`=`an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang`='.prepare(setting('Lingua')).")
WHERE `an_tipianagrafiche_lang`.`name` = 'Azienda' AND `an_anagrafiche`.`deleted_at` IS NULL") != 0;
$has_user = $dbo->fetchNum('SELECT `id` FROM `zz_users`') != 0;
$settings = [
@ -168,7 +171,7 @@ if (!$has_azienda) {
<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;
ob_start();

View File

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

View File

@ -197,7 +197,7 @@ switch (post('op')) {
// Lettura tipologia dell'utente loggato
$agente_is_logged = false;
if (!empty($user['idanagrafica'])) {
$rs = $dbo->fetchArray('SELECT descrizione FROM an_tipianagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche.idtipoanagrafica = an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE idanagrafica = '.prepare($user['idanagrafica']));
$rs = $dbo->fetchArray('SELECT `name` AS descrizione FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).') INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche`.`id` = `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` WHERE `idanagrafica` = '.prepare($user['idanagrafica']));
for ($i = 0; $i < count($rs); ++$i) {
if ($rs[$i]['descrizione'] == 'Agente') {
@ -236,8 +236,7 @@ switch (post('op')) {
echo json_encode(['id' => $id_record, 'text' => $anagrafica->ragione_sociale]);
}
$descrizioni_tipi = $anagrafica->tipi()->get()->pluck('descrizione')->toArray();
$descrizioni_tipi = $anagrafica->tipi()->get()->pluck('name')->toArray();
flash()->info(tr('Aggiunta nuova anagrafica di tipo _TYPE_', [
'_TYPE_' => '"'.implode(', ', $descrizioni_tipi).'"',
]));

View File

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

View File

@ -26,62 +26,61 @@ switch ($resource) {
$id_azienda = setting('Azienda predefinita');
$query = "SELECT
an_anagrafiche.idanagrafica AS id,
an_anagrafiche.lat,
an_anagrafiche.lng,
is_bloccata,
CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')')), IF(an_anagrafiche.deleted_at IS NULL, '', ' (".tr('eliminata').")'), IF(is_bloccata = 1, CONCAT(' (', an_relazioni.descrizione, ')'), ''),' - ', an_anagrafiche.codice ) AS descrizione,
idtipointervento_default AS idtipointervento,
in_tipiintervento.descrizione AS idtipointervento_descrizione,
an_anagrafiche.idzona,
contratto.id AS id_contratto,
contratto.descrizione AS descrizione_contratto,
co_pagamenti.id AS id_pagamento,
co_pagamenti.descrizione AS desc_pagamento,
banca_vendite.id AS id_banca_vendite,
CONCAT(banca_vendite.nome, ' - ', banca_vendite.iban) AS descrizione_banca_vendite
`an_anagrafiche`.`idanagrafica` AS id,
`an_anagrafiche`.`lat`,
`an_anagrafiche`.`lng`,
`is_bloccata`,
CONCAT(`ragione_sociale`, IF(`citta` IS NULL OR `citta` = '', '', CONCAT(' (', `citta`, ')')), IF(`an_anagrafiche`.`deleted_at` IS NULL, '', ' (".tr('eliminata').")'), IF(`is_bloccata` = 1, CONCAT(' (', `an_relazioni_lang`.`name`, ')'), ''),' - ', `an_anagrafiche`.`codice` ) AS descrizione,
`idtipointervento_default` AS idtipointervento,
`in_tipiintervento`.`descrizione` AS idtipointervento_descrizione,
`an_anagrafiche`.`idzona`,
`contratto`.`id` AS id_contratto,
`contratto`.`descrizione` AS descrizione_contratto,
`co_pagamenti`.`id` AS id_pagamento,
`co_pagamenti`.`descrizione` AS desc_pagamento,
`banca_vendite`.`id` AS id_banca_vendite,
CONCAT(`banca_vendite`.`nome`, ' - ', `banca_vendite`.`iban`) AS descrizione_banca_vendite
FROM
an_anagrafiche
INNER JOIN (an_tipianagrafiche_anagrafiche
INNER JOIN an_tipianagrafiche
ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica)
ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica LEFT JOIN in_tipiintervento ON an_anagrafiche.idtipointervento_default=in_tipiintervento.idtipointervento
`an_anagrafiche`
INNER JOIN (`an_tipianagrafiche_anagrafiche`
INNER JOIN `an_tipianagrafiche`ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche`.`id`
LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = ".setting('Lingua').'))
ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` LEFT JOIN `in_tipiintervento` ON `an_anagrafiche`.`idtipointervento_default`=`in_tipiintervento`.`idtipointervento`
LEFT JOIN `an_relazioni` ON `an_anagrafiche`.`idrelazione`=`an_relazioni`.`id`
LEFT JOIN `an_relazioni_lang` ON (`an_relazioni`.`id`=`an_relazioni_lang`.`id_record` AND `an_relazioni_lang`.`id_lang`= '.setting('Lingua').")
LEFT JOIN
an_relazioni
ON an_anagrafiche.idrelazione=an_relazioni.id
(SELECT `co_contratti`.`id`, `idanagrafica`, CONCAT('Contratto ', `numero`, ' del ', DATE_FORMAT(`data_bozza`, '%d/%m/%Y'), ' - ', `co_contratti`.`nome`, ' [', `co_staticontratti`.`descrizione` , ']') AS descrizione FROM `co_contratti` LEFT JOIN `co_staticontratti` ON `co_contratti`.`idstato`=`co_staticontratti`.`id` WHERE `co_contratti`.`predefined`=1 AND `is_pianificabile`=1) AS contratto
ON `an_anagrafiche`.`idanagrafica`=`contratto`.`idanagrafica`
LEFT JOIN
(SELECT co_contratti.id, idanagrafica, CONCAT('Contratto ', numero, ' del ', DATE_FORMAT(data_bozza, '%d/%m/%Y'), ' - ', co_contratti.nome, ' [', `co_staticontratti`.`descrizione` , ']') AS descrizione FROM co_contratti LEFT JOIN co_staticontratti ON co_contratti.idstato=co_staticontratti.id WHERE co_contratti.predefined=1 AND is_pianificabile=1) AS contratto
ON an_anagrafiche.idanagrafica=contratto.idanagrafica
`co_pagamenti`
ON `an_anagrafiche`.`idpagamento_vendite`=`co_pagamenti`.`id`
LEFT JOIN
co_pagamenti
ON an_anagrafiche.idpagamento_vendite=co_pagamenti.id
LEFT JOIN
co_banche banca_vendite
ON co_pagamenti.idconto_vendite = banca_vendite.id_pianodeiconti3 AND banca_vendite.id_anagrafica = ".prepare($id_azienda).' AND banca_vendite.deleted_at IS NULL AND banca_vendite.predefined = 1
`co_banche` banca_vendite
ON `co_pagamenti`.`idconto_vendite` = `banca_vendite`.`id_pianodeiconti3` AND `banca_vendite`.`id_anagrafica` = ".prepare($id_azienda).' AND `banca_vendite`.`deleted_at` IS NULL AND `banca_vendite`.`predefined` = 1
|where|
ORDER BY
ragione_sociale';
`ragione_sociale`';
foreach ($elements as $element) {
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
$filter[] = '`an_anagrafiche`.`idanagrafica`='.prepare($element);
}
$where[] = "an_tipianagrafiche.descrizione='Cliente'";
$where[] = "`an_tipianagrafiche_lang`.`name`='Cliente'";
if (empty($filter)) {
$where[] = 'an_anagrafiche.deleted_at IS NULL';
$where[] = '`an_anagrafiche`.`deleted_at` IS NULL';
if (!empty($filter_agente)) {
$where[] = 'idagente = '.Auth::user()['idanagrafica'];
$where[] = '`idagente` = '.Auth::user()['idanagrafica'];
}
}
if (!empty($search)) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.piva LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice_fiscale LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`ragione_sociale` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`citta` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`provincia` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`an_anagrafiche`.`codice` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`an_anagrafiche`.`piva` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`an_anagrafiche`.`codice_fiscale` LIKE '.prepare('%'.$search.'%');
}
$data = AJAX::selectResults($query, $where, $filter, $search_fields, $limit, $custom);
@ -104,47 +103,47 @@ switch ($resource) {
case 'fornitori':
$id_azienda = setting('Azienda predefinita');
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')')), IF(an_anagrafiche.deleted_at IS NULL, '', ' (".tr('eliminata').")'),' - ', an_anagrafiche.codice) AS descrizione, idtipointervento_default AS idtipointervento, co_pagamenti.id AS id_pagamento, co_pagamenti.descrizione AS desc_pagamento, banca_acquisti.id AS id_banca_acquisti, CONCAT(banca_acquisti.nome, ' - ', banca_acquisti.iban) AS descrizione_banca_acquisti FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica LEFT JOIN co_pagamenti ON an_anagrafiche.idpagamento_acquisti=co_pagamenti.id LEFT JOIN co_banche banca_acquisti ON co_pagamenti.idconto_acquisti = banca_acquisti.id_pianodeiconti3 AND banca_acquisti.id_anagrafica = ".prepare($id_azienda).' AND banca_acquisti.deleted_at IS NULL AND banca_acquisti.predefined = 1 |where| ORDER BY ragione_sociale';
$query = "SELECT `an_anagrafiche`.`idanagrafica` AS id, CONCAT(`ragione_sociale`, IF(`citta` IS NULL OR `citta` = '', '', CONCAT(' (', `citta`, ')')), IF(`an_anagrafiche`.`deleted_at` IS NULL, '', ' (".tr('eliminata').")'),' - ', `an_anagrafiche`.`codice`) AS descrizione, `idtipointervento_default` AS `idtipointervento`, `co_pagamenti`.`id` AS id_pagamento, `co_pagamenti`.`descrizione` AS desc_pagamento, `banca_acquisti`.`id` AS id_banca_acquisti, CONCAT(`banca_acquisti`.`nome`, ' - ', `banca_acquisti`.`iban`) AS descrizione_banca_acquisti FROM `an_anagrafiche` INNER JOIN (`an_tipianagrafiche_anagrafiche` INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche`.`id` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = ".prepare(setting('Lingua')).')) ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` LEFT JOIN `co_pagamenti` ON `an_anagrafiche`.`idpagamento_acquisti`=`co_pagamenti`.`id` LEFT JOIN `co_banche` banca_acquisti ON `co_pagamenti`.`idconto_acquisti` = `banca_acquisti`.`id_pianodeiconti3` AND `banca_acquisti`.`id_anagrafica` = '.prepare($id_azienda).' AND `banca_acquisti`.`deleted_at` IS NULL AND `banca_acquisti`.`predefined` = 1 |where| ORDER BY `ragione_sociale`';
foreach ($elements as $element) {
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
$filter[] = '`an_anagrafiche`.`idanagrafica`='.prepare($element);
}
$where[] = "an_tipianagrafiche.descrizione='Fornitore'";
if (empty($filter)) {
$where[] = 'an_anagrafiche.deleted_at IS NULL';
$where[] = "`name` = 'Fornitore'";
$where[] = '`an_anagrafiche`.`deleted_at` IS NULL';
}
if (!empty($search)) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.piva LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice_fiscale LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`ragione_sociale` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`citta` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`provincia` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`an_anagrafiche`.`codice` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`an_anagrafiche`.`piva` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`an_anagrafiche`.`codice_fiscale` LIKE '.prepare('%'.$search.'%');
}
break;
case 'vettori':
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')')), IF(an_anagrafiche.deleted_at IS NULL, '', ' (".tr('eliminata').")'),' - ', an_anagrafiche.codice) AS descrizione, idtipointervento_default AS idtipointervento FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale";
$query = "SELECT `an_anagrafiche`.`idanagrafica` AS id, CONCAT(`ragione_sociale`, IF(`citta` IS NULL OR `citta` = '', '', CONCAT(' (', `citta`, ')')), IF(`an_anagrafiche`.`deleted_at` IS NULL, '', ' (".tr('eliminata').")'),' - ', `an_anagrafiche`.`codice`) AS descrizione, `idtipointervento_default` AS idtipointervento FROM `an_anagrafiche` INNER JOIN (`an_tipianagrafiche_anagrafiche` INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche`.`id` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = ".prepare(setting('Lingua')).')) ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` |where| ORDER BY `ragione_sociale`';
foreach ($elements as $element) {
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
$filter[] = '`an_anagrafiche`.`idanagrafica`='.prepare($element);
}
$where[] = "descrizione='Vettore'";
$where[] = "`name`='Vettore'";
if (empty($filter)) {
$where[] = 'an_anagrafiche.deleted_at IS NULL';
$where[] = '`an_anagrafiche`.`deleted_at` IS NULL';
}
if (!empty($search)) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.piva LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice_fiscale LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`ragione_sociale` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`citta` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`provincia` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`an_anagrafiche`.`codice` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`an_anagrafiche`.`piva` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`an_anagrafiche`.`codice_fiscale` LIKE '.prepare('%'.$search.'%');
}
break;
@ -154,31 +153,31 @@ switch ($resource) {
* - idanagrafica
*/
case 'agenti':
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')')), IF(an_anagrafiche.deleted_at IS NULL, '', ' (".tr('eliminata').")'),' - ', an_anagrafiche.codice) AS descrizione, idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale";
$query = "SELECT `an_anagrafiche`.`idanagrafica` AS id, CONCAT(`ragione_sociale`, IF(`citta` IS NULL OR `citta` = '', '', CONCAT(' (', `citta`, ')')), IF(`an_anagrafiche`.`deleted_at` IS NULL, '', ' (".tr('eliminata').")'),' - ', `an_anagrafiche`.`codice`) AS descrizione, `idtipointervento_default` FROM `an_anagrafiche` INNER JOIN (`an_tipianagrafiche_anagrafiche` INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche`.`id` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = ".prepare(setting('Lingua')).')) ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` |where| ORDER BY `ragione_sociale`';
foreach ($elements as $element) {
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
$filter[] = '`an_anagrafiche`.`idanagrafica`='.prepare($element);
}
$where[] = "descrizione='Agente'";
$where[] = "`name`='Agente'";
if (empty($filter)) {
$where[] = 'an_anagrafiche.deleted_at IS NULL';
$where[] = '`an_anagrafiche`.`deleted_at` IS NULL';
}
if (!empty($search)) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.piva LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice_fiscale LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`ragione_sociale` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`citta` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`provincia` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`an_anagrafiche`.`codice` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`an_anagrafiche`.`piva` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`an_anagrafiche`.`codice_fiscale` LIKE '.prepare('%'.$search.'%');
}
$results = AJAX::selectResults($query, $where, $filter, $search, $limit, $custom);
// Evidenzia l'agente di default
if ($superselect['idanagrafica']) {
$rsa = $dbo->fetchArray('SELECT idagente FROM an_anagrafiche WHERE idanagrafica='.prepare($superselect['idanagrafica']));
$rsa = $dbo->fetchArray('SELECT `idagente` FROM `an_anagrafiche` WHERE `idanagrafica`='.prepare($superselect['idanagrafica']));
$idagente_default = $rsa[0]['idagente'];
} else {
$idagente_default = 0;
@ -192,57 +191,57 @@ switch ($resource) {
break;
case 'tecnici':
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT(ragione_sociale, IF(citta IS NULL OR citta = '', '', CONCAT(' (', citta, ')')), IF(an_anagrafiche.deleted_at IS NULL, '', ' (".tr('eliminata').")'),' - ', an_anagrafiche.codice) AS descrizione, idtipointervento_default FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY ragione_sociale";
$query = "SELECT `an_anagrafiche`.`idanagrafica` AS id, CONCAT(`ragione_sociale`, IF(`citta` IS NULL OR `citta` = '', '', CONCAT(' (', `citta`, ')')), IF(`an_anagrafiche`.`deleted_at` IS NULL, '', ' (".tr('eliminata').")'),' - ', `an_anagrafiche`.`codice`) AS descrizione, `idtipointervento_default` FROM `an_anagrafiche` INNER JOIN (`an_tipianagrafiche_anagrafiche` INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche`.`id` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = ".prepare(setting('Lingua')).')) ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` |where| ORDER BY `ragione_sociale`';
foreach ($elements as $element) {
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
$filter[] = '`an_anagrafiche`.`idanagrafica`='.prepare($element);
}
$where[] = "descrizione='Tecnico'";
$where[] = "`name`='Tecnico'";
if (empty($filter)) {
$where[] = 'an_anagrafiche.deleted_at IS NULL';
$where[] = '`an_anagrafiche`.`deleted_at` IS NULL';
if (setting('Permetti inserimento sessioni degli altri tecnici')) {
} else {
// come tecnico posso aprire attività solo a mio nome
$user = Auth::user();
if ($user['gruppo'] == 'Tecnici' && !empty($user['idanagrafica'])) {
$where[] = 'an_anagrafiche.idanagrafica='.$user['idanagrafica'];
$where[] = '`an_anagrafiche`.`idanagrafica`='.$user['idanagrafica'];
}
}
}
if (!empty($search)) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.piva LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice_fiscale LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`ragione_sociale` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`citta` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`provincia` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`an_anagrafiche`.`codice` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`an_anagrafiche`.`piva` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`an_anagrafiche`.`codice_fiscale` LIKE '.prepare('%'.$search.'%');
}
break;
case 'clienti_fornitori':
$query = "SELECT `an_anagrafiche`.`idanagrafica` AS id, CONCAT_WS('', ragione_sociale, IF(citta !='' OR provincia != '', CONCAT(' (', citta, IF(provincia!='', CONCAT(' ', provincia), ''), ')'), ''), IF(an_anagrafiche.deleted_at IS NULL, '', ' (".tr('eliminata').")'),' - ', an_anagrafiche.codice) AS descrizione, `an_tipianagrafiche`.`descrizione` AS optgroup, idtipointervento_default, an_tipianagrafiche.idtipoanagrafica FROM `an_tipianagrafiche` INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` |where| ORDER BY `optgroup` ASC, ragione_sociale ASC";
$query = "SELECT `an_anagrafiche`.`idanagrafica` AS id, CONCAT_WS('', `ragione_sociale`, IF(`citta` !='' OR `provincia` != '', CONCAT(' (', `citta`, IF(`provincia`!='', CONCAT(' ', `provincia`), ''), ')'), ''), IF(`an_anagrafiche`.`deleted_at` IS NULL, '', ' (".tr('eliminata').")'),' - ', `an_anagrafiche`.`codice`) AS descrizione, `an_tipianagrafiche_lang`.`name` AS optgroup, `idtipointervento_default`, `an_tipianagrafiche`.`id` as id_tipo FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = ".prepare(setting('Lingua')).') INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche`.`id`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` |where| ORDER BY `optgroup` ASC, `ragione_sociale` ASC';
foreach ($elements as $element) {
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
$filter[] = '`an_anagrafiche`.`idanagrafica`='.prepare($element);
}
$where = [];
if (empty($filter)) {
$where[] = 'an_anagrafiche.deleted_at IS NULL';
$where[] = "an_tipianagrafiche_anagrafiche.idtipoanagrafica IN (SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione = 'Cliente' OR descrizione = 'Fornitore' OR descrizione = 'Azienda')";
$where[] = '`an_anagrafiche`.`deleted_at` IS NULL';
$where[] = '`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` IN (SELECT `an_tipianagrafiche`.`id` FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).") WHERE `name` = 'Cliente' OR `name` = 'Fornitore' OR `name` = 'Azienda')";
}
if (!empty($search)) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.piva LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice_fiscale LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`ragione_sociale` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`citta` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`provincia` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`an_anagrafiche`.`codice` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`an_anagrafiche`.`piva` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`an_anagrafiche`.`codice_fiscale` LIKE '.prepare('%'.$search.'%');
}
// Aggiunta filtri di ricerca
@ -274,23 +273,23 @@ switch ($resource) {
// Nota Bene: nel campo id viene specificato idtipoanagrafica-idanagrafica -> modulo Utenti e permessi, creazione nuovo utente
case 'anagrafiche':
$query = "SELECT an_anagrafiche.idanagrafica AS id, CONCAT_WS('', ragione_sociale, IF(citta !='' OR provincia != '', CONCAT(' (', citta, IF(provincia!='', CONCAT(' ', provincia), ''), ')'), ''), IF(an_anagrafiche.deleted_at IS NULL, '', ' (".tr('eliminata').")'),' - ', an_anagrafiche.codice) AS descrizione, `an_tipianagrafiche`.`descrizione` AS optgroup FROM an_anagrafiche INNER JOIN (an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica) ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica |where| ORDER BY `optgroup` ASC, ragione_sociale ASC";
$query = "SELECT `an_anagrafiche`.`idanagrafica` AS id, CONCAT_WS('', `ragione_sociale`, IF(`citta` !='' OR `provincia` != '', CONCAT(' (', `citta`, IF(`provincia`!='', CONCAT(' ', `provincia`), ''), ')'), ''), IF(`an_anagrafiche`.`deleted_at` IS NULL, '', ' (".tr('eliminata').")'),' - ', `an_anagrafiche`.`codice`) AS descrizione, `an_tipianagrafiche_lang`.`name` AS optgroup FROM `an_anagrafiche` INNER JOIN (`an_tipianagrafiche_anagrafiche` INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche`.`id` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = ".prepare(setting('Lingua')).')) ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica` |where| ORDER BY `optgroup` ASC, `ragione_sociale` ASC';
foreach ($elements as $element) {
$filter[] = 'an_anagrafiche.idanagrafica='.prepare($element);
$filter[] = '`an_anagrafiche`.`idanagrafica`='.prepare($element);
}
if (empty($filter)) {
$where[] = 'an_anagrafiche.deleted_at IS NULL';
$where[] = '`an_anagrafiche`.`deleted_at` IS NULL';
}
if (!empty($search)) {
$search_fields[] = 'ragione_sociale LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'provincia LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.piva LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_anagrafiche.codice_fiscale LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`ragione_sociale` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`citta` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`provincia` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`an_anagrafiche`.`codice` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`an_anagrafiche`.`piva` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`an_anagrafiche`.`codice_fiscale` LIKE '.prepare('%'.$search.'%');
}
// Aggiunta filtri di ricerca
@ -329,26 +328,26 @@ switch ($resource) {
SELECT
*
FROM
(SELECT '0' AS id, (SELECT lat FROM an_anagrafiche |where|) AS lat, (SELECT lng FROM an_anagrafiche |where|) AS lng, (SELECT idzona FROM an_anagrafiche |where|) AS idzona, CONCAT_WS(' - ', \"".tr('Sede legale')."\" , (SELECT CONCAT (citta, IF(indirizzo!='',CONCAT(' (', indirizzo, ')'), ''), ' (',ragione_sociale,')') FROM an_anagrafiche |where|)) AS descrizione
(SELECT '0' AS id, (SELECT `lat` FROM `an_anagrafiche` |where|) AS lat, (SELECT `lng` FROM `an_anagrafiche` |where|) AS lng, (SELECT `idzona` FROM `an_anagrafiche` |where|) AS idzona, CONCAT_WS(' - ', \"".tr('Sede legale')."\" , (SELECT CONCAT (`citta`, IF(`indirizzo`!='',CONCAT(' (', `indirizzo`, ')'), ''), ' (',`ragione_sociale`,')') FROM `an_anagrafiche` |where|)) AS descrizione
UNION
SELECT
id,
lat,
lng,
idzona,
CONCAT_WS(' - ', nomesede, CONCAT(citta, IF(indirizzo!='',CONCAT(' (', indirizzo, ')'), '')) ) FROM an_sedi |where|) AS tab
`id`,
`lat`,
`lng`,
`idzona`,
CONCAT_WS(' - ', `nomesede`, CONCAT(`citta`, IF(indirizzo!='',CONCAT(' (', `indirizzo`, ')'), '')) ) FROM `an_sedi` |where|) AS tab
HAVING
descrizione LIKE ".prepare('%'.$search.'%').'
`descrizione` LIKE ".prepare('%'.$search.'%').'
ORDER BY
descrizione';
`descrizione`';
foreach ($elements as $element) {
$filter[] = 'id='.prepare($element);
$filter[] = '`id`='.prepare($element);
}
$where[] = 'idanagrafica='.prepare($superselect['idanagrafica']);
$where[] = '`idanagrafica`='.prepare($superselect['idanagrafica']);
/*
if (!empty($search)) {
@ -362,21 +361,21 @@ switch ($resource) {
$user = Auth::user();
$id_azienda = setting('Azienda predefinita');
$query = "SELECT * FROM (SELECT '0' AS id, 'Sede legale' AS nomesede, CONCAT_WS(' - ', \"".tr('Sede legale')."\" , (SELECT CONCAT (citta, IF(indirizzo!='',CONCAT(' (', indirizzo, ')'), ''),' (', ragione_sociale,')') FROM an_anagrafiche |where|)) AS descrizione UNION SELECT id, nomesede, CONCAT_WS(' - ', nomesede, CONCAT(citta, IF(indirizzo!='',CONCAT(' (', indirizzo, ')'), '')) ) FROM an_sedi |where|) AS tab |filter| ORDER BY descrizione";
$query = "SELECT * FROM (SELECT '0' AS id, 'Sede legale' AS `nomesede`, CONCAT_WS(' - ', \"".tr('Sede legale')."\" , (SELECT CONCAT (`citta`, IF(`indirizzo`!='',CONCAT(' (', `indirizzo`, ')'), ''),' (', `ragione_sociale`,')') FROM `an_anagrafiche` |where|)) AS descrizione UNION SELECT `id`, `nomesede`, CONCAT_WS(' - ', `nomesede`, CONCAT(`citta`, IF(`indirizzo`!='',CONCAT(' (', `indirizzo`, ')'), '')) ) FROM `an_sedi` |where|) AS tab |filter| ORDER BY descrizione";
foreach ($elements as $element) {
$filter[] = 'id='.prepare($element);
$filter[] = '`id`='.prepare($element);
}
$where[] = 'idanagrafica='.prepare($id_azienda);
$where[] = '`idanagrafica`='.prepare($id_azienda);
// admin o utente senza una sede prefissata, avrà accesso a tutte le sedi
if (!empty($user->sedi) and !$user->is_admin) {
$where[] = 'id IN('.implode(',', $user->sedi).')';
$where[] = '`id` IN('.implode(',', $user->sedi).')';
}
if (!empty($search)) {
$search_fields[] = 'nomesede LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'citta LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`nomesede` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`citta` LIKE '.prepare('%'.$search.'%');
}
break;
@ -387,100 +386,100 @@ switch ($resource) {
*/
case 'referenti':
if (isset($superselect['idanagrafica'])) {
$query = 'SELECT an_referenti.id, an_referenti.nome AS descrizione, an_mansioni.nome AS optgroup FROM an_referenti LEFT JOIN an_mansioni ON an_referenti.idmansione=an_mansioni.id |where| ORDER BY optgroup, an_referenti.nome';
$query = 'SELECT `an_referenti`.`id`, `an_referenti`.`nome` AS descrizione, `an_mansioni`.`nome` AS optgroup FROM `an_referenti` LEFT JOIN `an_mansioni` ON `an_referenti`.`idmansione`=`an_mansioni`.`id` |where| ORDER BY optgroup, `an_referenti`.`nome`';
foreach ($elements as $element) {
$filter[] = 'an_referenti.id='.prepare($element);
$filter[] = '`an_referenti`.`id`='.prepare($element);
}
if (isset($superselect['idclientefinale'])) {
$where[] = '(idanagrafica='.prepare($superselect['idanagrafica']).' OR idanagrafica='.prepare($superselect['idclientefinale']).')';
$where[] = '(`idanagrafica`='.prepare($superselect['idanagrafica']).' OR `idanagrafica`='.prepare($superselect['idclientefinale']).')';
} else {
$where[] = 'idanagrafica='.prepare($superselect['idanagrafica']);
$where[] = '`idanagrafica`='.prepare($superselect['idanagrafica']);
}
if (isset($superselect['idsede_destinazione'])) {
$where[] = 'idsede='.prepare($superselect['idsede_destinazione']);
$where[] = '`idsede`='.prepare($superselect['idsede_destinazione']);
}
if (!empty($search)) {
$search_fields[] = 'an_referenti.nome LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`an_referenti`.`nome` LIKE '.prepare('%'.$search.'%');
}
}
break;
case 'nazioni':
$query = 'SELECT id AS id, iso2, CONCAT_WS(\' - \', iso2, nome) AS descrizione FROM an_nazioni |where| ORDER BY CASE WHEN iso2=\'IT\' THEN -1 ELSE iso2 END';
$query = 'SELECT `an_nazioni`.`id` AS id, `iso2`, CONCAT_WS(\' - \', `iso2`, `an_nazioni_lang`.`name`) AS descrizione FROM `an_nazioni` LEFT JOIN `an_nazioni_lang` ON (`an_nazioni`.`id` = `an_nazioni_lang`.`id_record` AND `an_nazioni_lang`.`id_lang` = '.prepare(setting('Lingua')).') |where| ORDER BY CASE WHEN `iso2`=\'IT\' THEN -1 ELSE `iso2` END';
foreach ($elements as $element) {
$filter[] = 'id='.prepare($element);
$filter[] = '`an_nazioni`.`id`='.prepare($element);
}
if (!empty($search)) {
$search_fields[] = 'nome LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'iso2 LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'CONCAT_WS(\' - \', iso2, nome) LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`an_nazioni_lang`.`name` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`iso2` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'CONCAT_WS(\' - \', `iso2`, `name`) LIKE '.prepare('%'.$search.'%');
}
break;
case 'regioni':
if (isset($superselect['id_nazione'])) {
$query = 'SELECT an_regioni.id AS id, an_regioni.iso2, CONCAT(CONCAT_WS(\' - \', an_regioni.iso2, an_regioni.nome), \' (\', an_nazioni.iso2, \')\') AS descrizione FROM an_regioni INNER JOIN an_nazioni ON an_regioni.id_nazione = an_nazioni.id |where| ORDER BY an_regioni.nome';
$query = 'SELECT `an_regioni`.`id` AS id, `an_regioni`.`iso2`, CONCAT(CONCAT_WS(\' - \', `an_regioni`.`iso2`, `an_regioni_lang`.`name`), \' (\', `an_nazioni`.`iso2`, \')\') AS descrizione FROM `an_regioni` LEFT JOIN `an_regioni_lang` ON (`an_regioni`.`id` = `an_regioni_lang`.`id_record` AND `an_regioni_lang`.`id_lang` = '.prepare(setting('Lingua')).') INNER JOIN `an_nazioni` ON `an_regioni`.`id_nazione` = `an_nazioni`.`id` |where| ORDER BY `an_regioni_lang`.`name`';
foreach ($elements as $element) {
$filter[] = 'an_regioni.id='.prepare($element);
$filter[] = '`an_regioni`.`id`='.prepare($element);
}
$where[] = 'an_regioni.id_nazione='.prepare($superselect['id_nazione']);
$where[] = '`an_regioni`.`id_nazione`='.prepare($superselect['id_nazione']);
if (!empty($search)) {
$search_fields[] = 'an_regioni.nome LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'an_regioni.iso2 LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'CONCAT_WS(\' - \', an_regioni.iso2, an_regioni.nome) LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`an_regioni_lang`.`name` LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`an_regioni`.`iso2` LIKE '.prepare('%'.$search.'%');
$search_fields[] = 'CONCAT_WS(\' - \', `an_regioni`.`iso2`, `an_regioni_lang`.`name`) LIKE '.prepare('%'.$search.'%');
}
}
break;
case 'relazioni':
$query = "SELECT id, CONCAT(descrizione, IF(an_relazioni.deleted_at IS NULL, '', ' (".tr('eliminata').")')) AS descrizione, colore AS _bgcolor_ FROM an_relazioni |where| ORDER BY descrizione";
$query = "SELECT `an_relazioni`.`id`, CONCAT(`name`, IF(`an_relazioni`.`deleted_at` IS NULL, '', ' (".tr('eliminata').")')) AS descrizione, `colore` AS _bgcolor_ FROM `an_relazioni` LEFT JOIN `an_relazioni_lang` ON (`an_relazioni`.`id` = `an_relazioni_lang`.`id_record` AND `an_relazioni_lang`.`id_lang` = ".prepare(setting('Lingua')).') |where| ORDER BY descrizione';
foreach ($elements as $element) {
$filter[] = 'id='.prepare($element);
$filter[] = '`an_relazioni`.`id`='.prepare($element);
}
if (empty($filter)) {
$where[] = 'an_relazioni.deleted_at IS NULL';
$where[] = '`an_relazioni`.`deleted_at` IS NULL';
}
if (!empty($search)) {
$search_fields[] = 'descrizione LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`an_relazioni_lang`.`name` LIKE '.prepare('%'.$search.'%');
}
break;
case 'provenienze':
$query = 'SELECT id, descrizione, colore AS bgcolor FROM an_provenienze |where| ORDER BY descrizione';
$query = 'SELECT `an_provenienze`.`id`, `an_provenienze_lang`.`name` as descrizione, `colore` AS bgcolor FROM `an_provenienze` LEFT JOIN `an_provenienze_lang` ON (`an_provenienze`.`id` = `an_provenienze_lang`.`id_record` AND `an_provenienze_lang`.`id_lang` = '.prepare(setting('Lingua')).') |where| ORDER BY `descrizione`';
foreach ($elements as $element) {
$filter[] = 'id='.prepare($element);
$filter[] = '`an_provenienze`.`id`='.prepare($element);
}
if (!empty($search)) {
$search_fields[] = 'descrizione LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`an_provenienze_lang`.`name` LIKE '.prepare('%'.$search.'%');
}
break;
case 'settori':
$query = 'SELECT id, descrizione FROM an_settori |where| ORDER BY descrizione';
$query = 'SELECT `an_settori`.`id`, `an_settori_lang`.`name` as descrizione FROM `an_settori` LEFT JOIN `an_settori_lang` ON (`an_settori`.`id` = `an_settori_lang`.`id_record` AND `an_settori_lang`.`id_lang` = '.prepare(setting('Lingua')).') |where| ORDER BY `name`';
foreach ($elements as $element) {
$filter[] = 'id='.prepare($element);
$filter[] = '`an_settori`.`id`='.prepare($element);
}
if (!empty($search)) {
$search_fields[] = 'descrizione LIKE '.prepare('%'.$search.'%');
$search_fields[] = '`name` LIKE '.prepare('%'.$search.'%');
}
break;

View File

@ -26,15 +26,15 @@ include_once __DIR__.'/../../core.php';
switch (post('op')) {
case 'delete-bulk':
$id_tipo_azienda = $dbo->fetchArray("SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione='Azienda'")[0]['idtipoanagrafica'];
$id_tipo_azienda = $dbo->fetchArray('SELECT `an_tipianagrafiche`.`id` FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).") WHERE `name`='Azienda'")[0]['id'];
foreach ($id_records as $id) {
$anagrafica = $dbo->fetchArray('SELECT an_tipianagrafiche.idtipoanagrafica FROM an_tipianagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche.idtipoanagrafica=an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE idanagrafica='.prepare($id));
$anagrafica = $dbo->fetchArray('SELECT `an_tipianagrafiche`.`id` FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).') INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche`.`id`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` WHERE `idanagrafica`='.prepare($id));
$tipi = array_column($anagrafica, 'idtipoanagrafica');
// Se l'anagrafica non è di tipo Azienda
if (!in_array($id_tipo_azienda, $tipi)) {
$dbo->query('UPDATE an_anagrafiche SET deleted_at = NOW() WHERE idanagrafica = '.prepare($id).Modules::getAdditionalsQuery($id_module));
$dbo->query('UPDATE `an_anagrafiche` SET `deleted_at` = NOW() WHERE `idanagrafica` = '.prepare($id).Modules::getAdditionalsQuery($id_module));
}
}

View File

@ -30,7 +30,7 @@ $is_agente = in_array($id_agente, $tipi_anagrafica);
$is_azienda = in_array($id_azienda, $tipi_anagrafica);
if (!$is_cliente && !$is_fornitore && !$is_azienda && $is_tecnico) {
$ignore = $dbo->fetchArray("SELECT id FROM zz_plugins WHERE name='Sedi' OR name='Referenti' OR name='Dichiarazioni d\'intento'");
$ignore = $dbo->fetchArray("SELECT `id` FROM `zz_plugins` WHERE `name`='Sedi' OR `name`='Referenti' OR `name`='Dichiarazioni d\'intento'");
foreach ($ignore as $plugin) {
echo '
@ -41,7 +41,7 @@ if (!$is_cliente && !$is_fornitore && !$is_azienda && $is_tecnico) {
}
if (!$is_cliente) {
$ignore = $dbo->fetchArray("SELECT id FROM zz_plugins WHERE name IN ('Impianti del cliente','Contratti del cliente','Ddt del cliente')");
$ignore = $dbo->fetchArray("SELECT `id` FROM `zz_plugins` WHERE `name` IN ('Impianti del cliente','Contratti del cliente','Ddt del cliente')");
foreach ($ignore as $plugin) {
echo '
@ -530,13 +530,13 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
</div>
<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 class="row">
<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 class="col-md-6">
@ -704,7 +704,7 @@ if ($is_cliente or $is_fornitore or $is_tecnico) {
<div class="row">
<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
if (in_array($id_azienda, $tipi_anagrafica)) {
echo '

View File

@ -21,19 +21,19 @@ include_once __DIR__.'/../../core.php';
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) {
${'id_'.strtolower($riga['descrizione'])} = $riga['idtipoanagrafica'];
${'id_'.strtolower($riga['descrizione'])} = $riga['id'];
}
if (isset($id_record)) {
$anagrafica = Anagrafica::withTrashed()->find($id_record);
$record = $dbo->fetchOne('SELECT *,
(SELECT GROUP_CONCAT(an_tipianagrafiche.idtipoanagrafica) FROM an_tipianagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche.idtipoanagrafica=an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE idanagrafica=an_anagrafiche.idanagrafica) AS idtipianagrafica,
(SELECT GROUP_CONCAT(idagente) FROM an_anagrafiche_agenti WHERE idanagrafica=an_anagrafiche.idanagrafica) AS idagenti,
(SELECT GROUP_CONCAT(descrizione) FROM an_tipianagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche.idtipoanagrafica=an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE idanagrafica=an_anagrafiche.idanagrafica) AS tipianagrafica
FROM an_anagrafiche WHERE idanagrafica='.prepare($id_record));
(SELECT GROUP_CONCAT(`an_tipianagrafiche`.`id`) FROM `an_tipianagrafiche` INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche`.`id`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` WHERE `idanagrafica`=`an_anagrafiche`.`idanagrafica`) AS idtipianagrafica,
(SELECT GROUP_CONCAT(`idagente`) FROM `an_anagrafiche_agenti` WHERE `idanagrafica`=`an_anagrafiche`.`idanagrafica`) AS idagenti,
(SELECT GROUP_CONCAT(`name`) FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id`=`an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang`='.prepare(setting('Lingua')).') INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche`.`id`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` WHERE `idanagrafica`=`an_anagrafiche`.`idanagrafica`) AS tipianagrafica
FROM `an_anagrafiche` WHERE `idanagrafica`='.prepare($id_record));
// Cast per latitudine e longitudine
if (!empty($record)) {
@ -41,6 +41,6 @@ if (isset($id_record)) {
$record['lng'] = floatval($record['lng']);
}
$tipi_anagrafica = $dbo->fetchArray('SELECT an_tipianagrafiche.idtipoanagrafica FROM an_tipianagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche.idtipoanagrafica=an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE idanagrafica='.prepare($id_record));
$tipi_anagrafica = array_column($tipi_anagrafica, 'idtipoanagrafica');
$tipi_anagrafica = $dbo->fetchArray('SELECT `an_tipianagrafiche`.`id` FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id`=`an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang`='.prepare(setting('Lingua')).') INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche`.`id`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` WHERE `idanagrafica`='.prepare($id_record));
$tipi_anagrafica = array_column($tipi_anagrafica, 'id');
}

View File

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

View File

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

View File

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

View File

@ -21,6 +21,7 @@ namespace Modules\Anagrafiche\Import;
use Importer\CSVImporter;
use Modules\Anagrafiche\Anagrafica;
use Modules\Anagrafiche\Nazione;
/**
* Struttura per la gestione delle operazioni di importazione (da CSV) delle Anagrafiche.
@ -251,15 +252,18 @@ class CSV extends CSVImporter
$tipi_selezionati = explode(',', $record['idtipoanagrafica']);
foreach ($tipi_selezionati as $tipo) {
$tipo_anagrafica = $database->fetchOne('SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE LOWER(descrizione) = LOWER('.prepare($tipo).') OR idtipoanagrafica = '.prepare($tipo))['idtipoanagrafica'];
$tipo_anagrafica = $database->fetchOne('SELECT `id` FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE LOWER(`name`) = LOWER('.prepare($tipo).') OR `idtipoanagrafica` = '.prepare($tipo))['idtipoanagrafica'];
// Creo il tipo anagrafica se non esiste
if (empty($tipo_anagrafica)) {
$database->insert('an_tipianagrafiche', [
'descrizione' => $tipo,
])['idtipoanagrafica'];
$id_tipoanagrafica = database()->query('INSERT INTO `an_tipianagrafiche` (`id`, `default`) VALUES (NULL, `1`)');
$database->insert('an_tipianagrafiche_lang', [
'id_lang' => setting('Lingua'),
'id_record' => $id_tipoanagrafica,
'name' => $tipo_anagrafica,
])['id'];
$tipo_anagrafica = $database->fetchOne('SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE lower(descrizione) = LOWER('.prepare($tipo).') OR idtipoanagrafica = '.prepare($tipo))['idtipoanagrafica'];
$tipo_anagrafica = $database->fetchOne('SELECT `an_tipianagrafiche`.`id` FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE lower(`name`) = LOWER('.prepare($tipo).') OR `idtipoanagrafica` = '.prepare($tipo))['idtipoanagrafica'];
}
$tipologie[] = $tipo_anagrafica;
@ -275,7 +279,7 @@ class CSV extends CSVImporter
// Fix per campi con contenuti derivati da query implicite
if (!empty($record['id_nazione'])) {
$record['id_nazione'] = $database->fetchOne('SELECT id FROM an_nazioni WHERE LOWER(nome) = LOWER('.prepare($record['id_nazione']).') OR LOWER(iso2) = LOWER('.prepare($record['id_nazione']).')')['id'];
$record['id_nazione'] = (new Nazione())->getByName($record['id_nazione'])->id_record;
} else {
unset($record['id_nazione']);
}
@ -284,11 +288,14 @@ class CSV extends CSVImporter
$id_settore = '';
if (!empty($record['id_settore'])) {
$settore = $record['id_settore'];
$id_settore = $database->fetchOne('SELECT id FROM an_settori WHERE LOWER(descrizione) = LOWER('.prepare($settore).')')['id'];
$id_settore = $database->fetchOne('SELECT `an_settori`.`id` FROM `an_settori` LEFT JOIN (`an_settori_lang` ON`an_settori`.`id` = `an_settori_lang`.`id_record` AND `an_settori_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE LOWER(`name`) = LOWER('.prepare($settore).')')['id'];
if (empty($id_settore)) {
$id_settore = $database->insert('an_settori', [
'descrizione' => $settore,
$id_settore = database()->query('INSERT INTO `an_settori` (`id`, `created_at`, `updated_at`) VALUES (NULL, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)');
$database->insert('an_settori_lang', [
'id_lang' => setting('Lingua'),
'id_record' => $id_settore,
'name' => $settore,
])['id'];
}
}

View File

@ -32,4 +32,34 @@ class Nazione extends Model
{
return $this->hasMany(Anagrafica::class, 'id_nazione');
}
/**
* Ritorna l'attributo name della nazione.
*
* @return string
*/
public function getNameAttribute()
{
return database()->table($this->table.'_lang')
->select('name')
->where('id_record', '=', $this->id)
->where('id_lang', '=', setting('Lingua'))
->first()->name;
}
/**
* Ritorna l'id della nazione a partire dal nome.
*
* @param string $name il nome da ricercare
*
* @return \Illuminate\Support\Collection
*/
public function getByName($name)
{
return database()->table($this->table.'_lang')
->select('id_record')
->where('name', '=', $name)
->where('id_lang', '=', setting('Lingua'))
->first();
}
}

View File

@ -27,28 +27,39 @@ class Tipo extends Model
use SimpleModelTrait;
protected $table = 'an_tipianagrafiche';
protected $primaryKey = 'idtipoanagrafica';
protected $appends = [
'id',
];
protected $hidden = [
'idtipoanagrafica',
];
/**
* Restituisce l'identificativo.
*
* @return int
*/
public function getIdAttribute()
{
return $this->idtipoanagrafica;
}
public function anagrafiche()
{
return $this->hasMany(Anagrafica::class, 'an_tipianagrafiche_anagrafiche', 'idtipoanagrafica', 'idanagrafica');
return $this->hasMany(Anagrafica::class, 'idtipoanagrafica');
}
/**
* Ritorna l'attributo name del tipo anagrafica.
*
* @return string
*/
public function getNameAttribute()
{
return database()->table($this->table.'_lang')
->select('name')
->where('id_record', '=', $this->id)
->where('id_lang', '=', setting('Lingua'))
->first()->name;
}
/**
* Ritorna l'id del tipo di anagrafica a partire dal nome.
*
* @param string $name il nome da ricercare
*
* @return \Illuminate\Support\Collection
*/
public function getByName($name)
{
return database()->table($this->table.'_lang')
->select('id_record')
->where('name', '=', $name)
->where('id_lang', '=', setting('Lingua'))
->first();
}
}

View File

@ -41,7 +41,7 @@ class Articolo extends Model
protected $table = 'mg_articoli';
public static function build($codice, $nome, Categoria $categoria = null, Categoria $sottocategoria = null)
public static function build($codice, $nome, ?Categoria $categoria = null, ?Categoria $sottocategoria = null)
{
$model = new static();

View File

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

View File

@ -16,7 +16,7 @@ echo '
// Tecnico
echo '
<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>';
// Data di partenza

View File

@ -24,21 +24,27 @@ include_once __DIR__.'/../../core.php';
// Individuazione dati selezionabili
// Stati interventi
$stati_intervento = $dbo->fetchArray('SELECT idstatointervento AS id, descrizione, colore FROM in_statiintervento WHERE deleted_at IS NULL ORDER BY descrizione ASC');
$stati_intervento = $dbo->fetchArray('SELECT `idstatointervento` AS id, `descrizione`, `colore` FROM `in_statiintervento` WHERE `deleted_at` IS NULL ORDER BY `descrizione` ASC');
// Tipi intervento
$tipi_intervento = $dbo->fetchArray('SELECT idtipointervento AS id, descrizione FROM in_tipiintervento WHERE deleted_at IS NULL ORDER BY descrizione ASC');
$tipi_intervento = $dbo->fetchArray('SELECT `idtipointervento` AS id, `descrizione` FROM `in_tipiintervento` WHERE `deleted_at` IS NULL ORDER BY `descrizione` ASC');
// Tecnici disponibili
$tecnici_disponibili = $dbo->fetchArray("SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale, colore FROM an_anagrafiche
INNER JOIN
an_tipianagrafiche_anagrafiche ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica
INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica
LEFT OUTER JOIN in_interventi_tecnici ON in_interventi_tecnici.idtecnico = an_anagrafiche.idanagrafica
INNER JOIN in_interventi ON in_interventi_tecnici.idintervento=in_interventi.id
WHERE an_anagrafiche.deleted_at IS NULL AND an_tipianagrafiche.descrizione='Tecnico' ".Modules::getAdditionalsQuery('Interventi', null, false).'
GROUP BY an_anagrafiche.idanagrafica
ORDER BY ragione_sociale ASC');
$tecnici_disponibili = $dbo->fetchArray('SELECT
`an_anagrafiche`.`idanagrafica` AS id, `ragione_sociale`, `colore`
FROM
`an_anagrafiche`
INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica`
INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche`.`id`
LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id`=`an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang`='.prepare(setting('Lingua')).")
LEFT JOIN `in_interventi_tecnici` ON `in_interventi_tecnici`.`idtecnico` = `an_anagrafiche`.`idanagrafica`
INNER JOIN `in_interventi` ON `in_interventi_tecnici`.`idintervento`=`in_interventi`.`id`
WHERE
`an_anagrafiche`.`deleted_at` IS NULL AND `an_tipianagrafiche_lang`.`name`='Tecnico' ".Modules::getAdditionalsQuery('Interventi', null, false).'
GROUP BY
`an_anagrafiche`.`idanagrafica`
ORDER BY
`ragione_sociale` ASC');
// Zone
$zone = $dbo->fetchArray('(SELECT 0 AS ordine, \'0\' AS id, \'Nessuna zona\' AS descrizione) UNION (SELECT 1 AS ordine, id, descrizione FROM an_zone) ORDER BY ordine, descrizione ASC');

View File

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

View File

@ -69,7 +69,7 @@ if ($module->name == 'Fatture di vendita' && $services_enable) {
$is_estera = false;
if (setting('Rimuovi avviso fatture estere')) {
$is_estera = $database->fetchOne('SELECT idanagrafica FROM an_anagrafiche INNER JOIN an_nazioni ON an_anagrafiche.id_nazione = an_nazioni.id WHERE an_nazioni.nome != "Italia" AND an_anagrafiche.idanagrafica = '.prepare($documento->idanagrafica));
$is_estera = $database->fetchOne('SELECT `idanagrafica` FROM `an_anagrafiche` INNER JOIN `an_nazioni` ON `an_anagrafiche`.`id_nazione` = `an_nazioni`.`id` LEFT JOIN `an_nazioni_lang` ON (`an_nazioni`.`id` = `an_nazioni_lang`.`id_record` AND `an_nazioni_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `an_nazioni_lang`.`name` != "Italia" AND `an_anagrafiche`.`idanagrafica` = '.prepare($documento->idanagrafica));
}
if ($documento->data <= $data_limite_invio && !$is_estera) {

View File

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

View File

@ -174,7 +174,7 @@ class CSV extends CSVImporter
// Verifica il tecnico e inserisce la sessione
$anagrafica_t = Anagrafica::where('ragione_sociale', $record['tecnico'])->first();
$tipo = $database->fetchOne('SELECT idtipoanagrafica FROM an_tipianagrafiche_anagrafiche WHERE idanagrafica = '.prepare($anagrafica_t['idanagrafica']));
$tipo = $database->fetchOne('SELECT `idtipoanagrafica` FROM `an_tipianagrafiche_anagrafiche` WHERE `idanagrafica` = '.prepare($anagrafica_t['idanagrafica']));
$tecnico = TipoAnagrafica::where('descrizione', 'Tecnico')->first();
if ($tipo = $tecnico['idtipoanagrafica']) {

View File

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

View File

@ -71,7 +71,7 @@ foreach ($destinatari_filtrati as $destinatario) {
$descrizione .= ' ['.$origine->nome.']';
}
$tipo_anagrafica = $database->fetchOne('SELECT GROUP_CONCAT(an_tipianagrafiche.descrizione) AS descrizione FROM an_tipianagrafiche_anagrafiche INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica WHERE an_tipianagrafiche_anagrafiche.idanagrafica='.prepare($anagrafica->id))['descrizione'];
$tipo_anagrafica = $database->fetchOne('SELECT GROUP_CONCAT(`an_tipianagrafiche_lang`.`name`) AS descrizione FROM `an_tipianagrafiche_anagrafiche` INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` = `an_tipianagrafiche`.`id` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `an_tipianagrafiche_anagrafiche`.`idanagrafica`='.prepare($anagrafica->id))['descrizione'];
$riga = [
Modules::link('Anagrafiche', $anagrafica->id, $descrizione),

View File

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

View File

@ -185,7 +185,7 @@ class Mastrino extends Model
/**
* Funzione dedicata alla distribuzione del totale pagato del movimento nelle relative scadenze associate.
*/
protected function correggiScadenza(Movimento $movimento, Scadenza $scadenza = null, Fattura $documento = null)
protected function correggiScadenza(Movimento $movimento, ?Scadenza $scadenza = null, ?Fattura $documento = null)
{
$is_nota = false;
$documento = $documento ?: $scadenza->documento;

View File

@ -36,7 +36,7 @@ class Movimento extends Model
'dare',
];
public static function build(Mastrino $mastrino, $id_conto, Fattura $documento = null, Scadenza $scadenza = null)
public static function build(Mastrino $mastrino, $id_conto, ?Fattura $documento = null, ?Scadenza $scadenza = null)
{
$model = new static();

View File

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

View File

@ -32,7 +32,7 @@ include_once __DIR__.'/../../core.php';
<div class="panel-body">
<div class="row">
<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 class="col-md-3">

View File

@ -20,5 +20,5 @@
include_once __DIR__.'/../../core.php';
if (isset($id_record)) {
$record = $dbo->fetchOne('SELECT * FROM `an_provenienze` WHERE id='.prepare($id_record));
$record = $dbo->fetchOne('SELECT * FROM `an_provenienze` LEFT JOIN `an_provenienze_lang` ON (`an_provenienze`.`id`=`an_provenienze_lang`.`id_record` AND `an_provenienze_lang`.`id_lang`='.setting('Lingua').') WHERE `an_provenienze`.`id`='.prepare($id_record));
}

View File

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

View File

@ -32,7 +32,7 @@ include_once __DIR__.'/../../core.php';
<div class="panel-body">
<div class="row">
<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 class="col-md-3">

View File

@ -20,5 +20,5 @@
include_once __DIR__.'/../../core.php';
if (isset($id_record)) {
$record = $dbo->fetchOne('SELECT * FROM `an_relazioni` WHERE id='.prepare($id_record));
$record = $dbo->fetchOne('SELECT * FROM `an_relazioni` LEFT JOIN `an_relazioni_lang` ON (`an_relazioni`.`id`=`an_relazioni_lang`.`id_record` AND `an_relazioni_lang`.`id_lang`='.setting('Lingua').') WHERE `an_relazioni`.`id`='.prepare($id_record));
}

View File

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

View File

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

View File

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

View File

@ -20,5 +20,5 @@
include_once __DIR__.'/../../core.php';
if (isset($id_record)) {
$record = $dbo->fetchOne('SELECT * FROM `an_settori` WHERE id='.prepare($id_record));
$record = $dbo->fetchOne('SELECT * FROM `an_settori` LEFT JOIN `an_settori_lang` ON (`an_settori`.`id`=`an_settori_lang`.`id_record` AND `an_settori_lang`.`id_lang`='.setting('Lingua').') WHERE `an_settori`.`id`='.prepare($id_record));
}

View File

@ -416,20 +416,25 @@ $(document).ready(function() {
</script>';
// Interventi per tecnico
$tecnici = $dbo->fetchArray("SELECT an_anagrafiche.idanagrafica AS id, ragione_sociale, colore FROM an_anagrafiche
INNER JOIN
an_tipianagrafiche_anagrafiche ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica
INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica
LEFT OUTER JOIN in_interventi_tecnici ON in_interventi_tecnici.idtecnico = an_anagrafiche.idanagrafica
INNER JOIN in_interventi ON in_interventi_tecnici.idintervento=in_interventi.id
WHERE an_anagrafiche.deleted_at IS NULL AND an_tipianagrafiche.descrizione='Tecnico'
GROUP BY an_anagrafiche.idanagrafica
ORDER BY ragione_sociale ASC");
$tecnici = $dbo->fetchArray('SELECT `an_anagrafiche`.`idanagrafica` AS id, `ragione_sociale`, `colore`
FROM
`an_anagrafiche`
INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica`
INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche`.`id`
LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche_lang`.`id_record` = `an_tipianagrafiche`.`id` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).")
LEFT JOIN `in_interventi_tecnici` ON `in_interventi_tecnici`.`idtecnico` = `an_anagrafiche`.`idanagrafica`
INNER JOIN `in_interventi` ON `in_interventi_tecnici`.`idintervento`=`in_interventi`.`id`
WHERE
`an_anagrafiche`.`deleted_at` IS NULL AND `an_tipianagrafiche_lang`.`name`='Tecnico'
GROUP BY
`an_anagrafiche`.`idanagrafica`
ORDER BY
`ragione_sociale` ASC");
$dataset = '';
$where = implode(',', (array) json_decode($_SESSION['superselect']['idtipiintervento'])) != '' ? 'in_interventi_tecnici.idtipointervento IN('.implode(',', (array) json_decode($_SESSION['superselect']['idtipiintervento'])).')' : '1=1';
$where = implode(',', (array) json_decode($_SESSION['superselect']['idtipiintervento'])) != '' ? '`in_interventi_tecnici`.`idtipointervento` IN('.implode(',', (array) json_decode($_SESSION['superselect']['idtipiintervento'])).')' : '1=1';
foreach ($tecnici as $tecnico) {
$sessioni = $dbo->fetchArray('SELECT SUM(in_interventi_tecnici.ore) AS result, CONCAT(CAST(SUM(in_interventi_tecnici.ore) AS char(20)),\' ore\') AS ore_lavorate, YEAR(in_interventi_tecnici.orario_inizio) AS year, MONTH(in_interventi_tecnici.orario_inizio) AS month FROM in_interventi_tecnici INNER JOIN `in_interventi` ON `in_interventi_tecnici`.`idintervento` = `in_interventi`.`id` LEFT JOIN `in_statiintervento` ON `in_interventi`.`idstatointervento`=`in_statiintervento`.`idstatointervento` WHERE in_interventi_tecnici.idtecnico = '.prepare($tecnico['id']).' AND in_interventi_tecnici.orario_inizio BETWEEN '.prepare($start).' AND '.prepare($end).' AND `in_statiintervento`.`is_completato` AND '.$where.' GROUP BY YEAR(in_interventi_tecnici.orario_inizio), MONTH(in_interventi_tecnici.orario_inizio) ORDER BY YEAR(in_interventi_tecnici.orario_inizio) ASC, MONTH(in_interventi_tecnici.orario_inizio) ASC');
$sessioni = $dbo->fetchArray('SELECT SUM(`in_interventi_tecnici`.`ore`) AS result, CONCAT(CAST(SUM(`in_interventi_tecnici`.`ore`) AS char(20)),\' ore\') AS ore_lavorate, YEAR(`in_interventi_tecnici`.`orario_inizio`) AS year, MONTH(`in_interventi_tecnici`.`orario_inizio`) AS month FROM `in_interventi_tecnici` INNER JOIN ``in_interventi`` ON ``in_interventi_tecnici``.`idintervento` = `in_interventi`.`id` LEFT JOIN `in_statiintervento` ON `in_interventi`.`idstatointervento`=`in_statiintervento`.`idstatointervento` WHERE `in_interventi_tecnici`.`idtecnico` = '.prepare($tecnico['id']).' AND `in_interventi_tecnici`.`orario_inizio` BETWEEN '.prepare($start).' AND '.prepare($end).' AND `in_statiintervento`.`is_completato` AND '.$where.' GROUP BY YEAR(`in_interventi_tecnici`.`orario_inizio`), MONTH(`in_interventi_tecnici`.`orario_inizio`) ORDER BY YEAR(`in_interventi_tecnici`.`orario_inizio`) ASC, MONTH(`in_interventi_tecnici`.`orario_inizio`) ASC');
$sessioni = Stats::monthly($sessioni, $start, $end);
@ -535,23 +540,55 @@ $(document).ready(function() {
$dataset = '';
$nuovi_clienti = $dbo->fetchArray('SELECT COUNT(*) AS result, GROUP_CONCAT(an_anagrafiche.ragione_sociale, "<br>") AS ragioni_sociali, YEAR(an_anagrafiche.created_at) AS year, MONTH(an_anagrafiche.created_at) AS month FROM an_anagrafiche
INNER JOIN an_tipianagrafiche_anagrafiche ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica
INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica
WHERE an_tipianagrafiche.descrizione = "Cliente" AND deleted_at IS NULL AND an_anagrafiche.created_at BETWEEN '.prepare($start).' AND '.prepare($end).' GROUP BY YEAR(an_anagrafiche.created_at), MONTH(an_anagrafiche.created_at) ORDER BY YEAR(an_anagrafiche.created_at) ASC, MONTH(an_anagrafiche.created_at) ASC');
$nuovi_clienti = $dbo->fetchArray('SELECT
COUNT(*) AS result,
GROUP_CONCAT(`an_anagrafiche`.`ragione_sociale`, "<br>") AS ragioni_sociali,
YEAR(`an_anagrafiche`.`created_at`) AS year,
MONTH(`an_anagrafiche`.`created_at`) AS month
FROM
`an_anagrafiche`
INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica`
INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche`.`id`
LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).')
WHERE
`an_tipianagrafiche_lang`.`name` = "Cliente" AND `deleted_at` IS NULL AND `an_anagrafiche`.`created_at` BETWEEN '.prepare($start).' AND '.prepare($end).' GROUP BY YEAR(`an_anagrafiche`.`created_at`), MONTH(`an_anagrafiche`.`created_at`) ORDER BY YEAR(`an_anagrafiche`.`created_at`) ASC, MONTH(`an_anagrafiche`.`created_at`) ASC');
$nuovi_fornitori = $dbo->fetchArray('SELECT COUNT(*) AS result, GROUP_CONCAT(an_anagrafiche.ragione_sociale, "<br>") AS ragioni_sociali, YEAR(an_anagrafiche.created_at) AS year, MONTH(an_anagrafiche.created_at) AS month FROM an_anagrafiche
INNER JOIN an_tipianagrafiche_anagrafiche ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica
INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica
WHERE an_tipianagrafiche.descrizione = "Fornitore" AND deleted_at IS NULL AND an_anagrafiche.created_at BETWEEN '.prepare($start).' AND '.prepare($end).' GROUP BY YEAR(an_anagrafiche.created_at), MONTH(an_anagrafiche.created_at) ORDER BY YEAR(an_anagrafiche.created_at) ASC, MONTH(an_anagrafiche.created_at) ASC');
$nuovi_fornitori = $dbo->fetchArray('SELECT
COUNT(*) AS result,
GROUP_CONCAT(`an_anagrafiche`.`ragione_sociale`, "<br>") AS ragioni_sociali,
YEAR(`an_anagrafiche`.`created_at`) AS year,
MONTH(`an_anagrafiche`.`created_at`) AS month
FROM
`an_anagrafiche`
INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica`
INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche`.`id`
LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).')
WHERE
`an_tipianagrafiche_lang`.`name` = "Fornitore" AND `deleted_at` IS NULL AND `an_anagrafiche`.`created_at` BETWEEN '.prepare($start).' AND '.prepare($end).'
GROUP BY
YEAR(`an_anagrafiche`.`created_at`), MONTH(`an_anagrafiche`.`created_at`)
ORDER BY
YEAR(`an_anagrafiche`.`created_at`) ASC, MONTH(`an_anagrafiche`.`created_at`) ASC');
// Nuovi clienti per i quali ho emesso almeno una fattura di vendita
$clienti_acquisiti = $dbo->fetchArray('SELECT COUNT(*) AS result, GROUP_CONCAT(an_anagrafiche.ragione_sociale, "<br>") AS ragioni_sociali, YEAR(an_anagrafiche.created_at) AS year, MONTH(an_anagrafiche.created_at) AS month FROM an_anagrafiche
INNER JOIN co_documenti ON an_anagrafiche.idanagrafica = co_documenti.idanagrafica
INNER JOIN co_tipidocumento ON co_documenti.idtipodocumento=co_tipidocumento.id
INNER JOIN an_tipianagrafiche_anagrafiche ON an_anagrafiche.idanagrafica=an_tipianagrafiche_anagrafiche.idanagrafica
INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica=an_tipianagrafiche.idtipoanagrafica
WHERE an_tipianagrafiche.descrizione = "Cliente" AND co_tipidocumento.dir = "entrata" AND an_anagrafiche.created_at BETWEEN '.prepare($start).' AND '.prepare($end).' GROUP BY YEAR(an_anagrafiche.created_at), MONTH(an_anagrafiche.created_at) ORDER BY YEAR(an_anagrafiche.created_at) ASC, MONTH(an_anagrafiche.created_at) ASC');
$clienti_acquisiti = $dbo->fetchArray('SELECT
COUNT(*) AS result,
GROUP_CONCAT(`an_anagrafiche`.`ragione_sociale`, "<br>") AS ragioni_sociali,
YEAR(`an_anagrafiche`.`created_at`) AS year,
MONTH(`an_anagrafiche`.`created_at`) AS month
FROM
`an_anagrafiche`
INNER JOIN `co_documenti` ON `an_anagrafiche`.`idanagrafica` = `co_documenti`.`idanagrafica`
INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento`=`co_tipidocumento`.`id`
INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_anagrafiche`.`idanagrafica`=`an_tipianagrafiche_anagrafiche`.`idanagrafica`
INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica`=`an_tipianagrafiche`.`id`
LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id` = `an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).')
WHERE
`an_tipianagrafiche_lang`.`name` = "Cliente" AND `co_tipidocumento`.`dir` = "entrata" AND `an_anagrafiche`.`created_at` BETWEEN '.prepare($start).' AND '.prepare($end).'
GROUP BY
YEAR(`an_anagrafiche`.`created_at`), MONTH(`an_anagrafiche`.`created_at`)
ORDER BY
YEAR(`an_anagrafiche`.`created_at`) ASC, MONTH(`an_anagrafiche`.`created_at`) ASC');
// Random color
$background = '#'.dechex(rand(256, 16777215));

View File

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

View File

@ -51,7 +51,7 @@ if (!empty($record['default'])) {
<div class="row">
<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>

View File

@ -20,5 +20,5 @@
include_once __DIR__.'/../../core.php';
if (isset($id_record)) {
$record = $dbo->fetchOne('SELECT * FROM an_tipianagrafiche WHERE idtipoanagrafica='.prepare($id_record));
$record = $dbo->fetchOne('SELECT * FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id`=`an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang`='.prepare(setting('Lingua')).') WHERE `an_tipianagrafiche`.`id`='.prepare($id_record));
}

View File

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

View File

@ -19,7 +19,7 @@
include_once __DIR__.'/../../core.php';
$utenti = $dbo->fetchArray('SELECT *, (SELECT ragione_sociale FROM an_anagrafiche WHERE an_anagrafiche.idanagrafica=zz_users.idanagrafica ) AS ragione_sociale, (SELECT GROUP_CONCAT(descrizione SEPARATOR ", ") FROM an_tipianagrafiche INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche.idtipoanagrafica=an_tipianagrafiche_anagrafiche.idtipoanagrafica WHERE idanagrafica=zz_users.idanagrafica GROUP BY idanagrafica) AS tipo FROM zz_users WHERE idgruppo='.prepare($record['id']));
$utenti = $dbo->fetchArray('SELECT *, (SELECT `ragione_sociale` FROM `an_anagrafiche` WHERE `an_anagrafiche`.`idanagrafica`=`zz_users`.`idanagrafica` ) AS `ragione_sociale`, (SELECT GROUP_CONCAT(`name` SEPARATOR ", ") FROM `an_tipianagrafiche` LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche_lang`.`id_record` = `an_tipianagrafiche`.`id` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).') INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche`.`id`=`an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` WHERE `idanagrafica`=`zz_users`.`idanagrafica` GROUP BY `idanagrafica`) AS tipo FROM `zz_users` WHERE `idgruppo`='.prepare($record['id']));
echo '
<div class="panel panel-primary">

View File

@ -35,7 +35,7 @@ class Login extends Resource implements CreateInterface
$token = auth()->getToken();
// Informazioni da restituire tramite l'API
$response['user'] = $database->fetchOne('SELECT `an_anagrafiche`.`idanagrafica` AS idanagrafica, `ragione_sociale`, `codice`, `piva`, `codice_fiscale`, `indirizzo`, `citta`, `provincia`, (SELECT `nome` FROM `an_nazioni` WHERE `an_nazioni`.`id` = `an_anagrafiche`.`id_nazione`) AS nazione, `telefono`, `fax`, `cellulare`, `an_anagrafiche`.`email` FROM `zz_users` LEFT JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `zz_users`.`idanagrafica` WHERE `id` = :id', [
$response['user'] = $database->fetchOne('SELECT `an_anagrafiche`.`idanagrafica` AS idanagrafica, `ragione_sociale`, `codice`, `piva`, `codice_fiscale`, `indirizzo`, `citta`, `provincia`, (SELECT `an_nazioni_lang`.`name` FROM `an_nazioni` LEFT JOIN `an_nazioni_lang` ON (`an_nazioni`.`id` = `an_nazioni_lang`.`id_record` AND `an_nazioni_lang`.`id_lang` = '.prepare(setting('Lingua')).') WHERE `an_nazioni`.`id` = `an_anagrafiche`.`id_nazione`) AS nazione, `telefono`, `fax`, `cellulare`, `an_anagrafiche`.`email` FROM `zz_users` LEFT JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `zz_users`.`idanagrafica` WHERE `id` = :id', [
':id' => $user['id'],
]);

View File

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

View File

@ -20,6 +20,7 @@
include_once __DIR__.'/../../core.php';
use Carbon\Carbon;
use Modules\Anagrafiche\Tipo;
use Modules\DDT\DDT;
use Modules\Fatture\Fattura;
use Modules\Fatture\Stato;
@ -173,12 +174,13 @@ switch (filter('op')) {
}
// Aggiorno la tipologia di anagrafica fornitore
$anagrafica = $database->fetchOne('SELECT idanagrafica FROM co_documenti WHERE co_documenti.id='.prepare($id_fattura));
$rs_t = $database->fetchOne("SELECT * FROM an_tipianagrafiche_anagrafiche WHERE idtipoanagrafica=(SELECT an_tipianagrafiche.idtipoanagrafica FROM an_tipianagrafiche WHERE an_tipianagrafiche.descrizione='Fornitore') AND idanagrafica=".prepare($anagrafica['idanagrafica']));
$anagrafica = $database->fetchOne('SELECT `idanagrafica` FROM `co_documenti` WHERE `co_documenti`.`id`='.prepare($id_fattura));
$id_tipo = (new Tipo())->getByName('Fornitore')->id_record;
$rs_t = $database->fetchOne('SELECT * FROM `an_tipianagrafiche_anagrafiche` WHERE `idtipoanagrafica`='.prepare($id_tipo).' AND `idanagrafica`='.prepare($anagrafica['idanagrafica']));
// Se non trovo corrispondenza aggiungo all'anagrafica la tipologia fornitore
if (empty($rs_t)) {
$database->query("INSERT INTO an_tipianagrafiche_anagrafiche (idtipoanagrafica, idanagrafica) VALUES ((SELECT an_tipianagrafiche.idtipoanagrafica FROM an_tipianagrafiche WHERE an_tipianagrafiche.descrizione='Fornitore'), ".prepare($anagrafica['idanagrafica']).')');
$database->query("INSERT INTO `an_tipianagrafiche_anagrafiche` (`idtipoanagrafica`, `idanagrafica`) VALUES ($id_tipo, ".prepare($anagrafica['idanagrafica']).')');
}
// Processo il file ricevuto

View File

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

View File

@ -162,7 +162,7 @@ class Gestore
$this->debito_diretto = new DirectDebitCBI();
}
public function aggiungi(Scadenza $scadenza, int $identifier, string $descrizione, string $codice_sequenza = null)
public function aggiungi(Scadenza $scadenza, int $identifier, string $descrizione, ?string $codice_sequenza = null)
{
$documento = $scadenza->documento;
$controparte = $scadenza->anagrafica;

View File

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

View File

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

View File

@ -19,6 +19,8 @@
include_once __DIR__.'/../../core.php';
use Modules\Anagrafiche\Nazione;
// id_record = sede
if (isset($id_record)) {
$record = $dbo->fetchOne('SELECT * FROM an_sedi WHERE id='.prepare($id_record));
@ -29,5 +31,5 @@ if (isset($id_record)) {
// id_parent = anagrafica
if (isset($id_parent)) {
$record['tipo_anagrafica'] = $dbo->fetchOne('SELECT tipo FROM an_anagrafiche WHERE an_anagrafiche.idanagrafica ='.prepare($id_parent))['tipo'];
$record['iso2'] = $dbo->fetchOne('SELECT iso2 FROM an_nazioni INNER JOIN an_anagrafiche ON an_nazioni.id = an_anagrafiche.id_nazione WHERE an_anagrafiche.idanagrafica ='.prepare($id_parent))['iso2'];
$record['iso2'] = Nazione::find($record['id_nazione'])->iso2;
}

View File

@ -74,8 +74,10 @@ elseif ($anagrafica->isTipo('Tecnico')) {
$interventi = Intervento::whereIn('id', array_column($interventi, 'id'))->get();
$totale_interventi = $interventi->sum('totale_imponibile');
$sessioni = Sessione::whereIn('id', array_column($sessioni, 'id'))->get();
$totale_ore_lavorate = $sessioni->sum('ore');
if ($sessioni){
$sessioni = Sessione::whereIn('id', array_column($sessioni, 'id'))->get();
$totale_ore_lavorate = $sessioni->sum('ore');
}
// Ddt in uscita
$ddt_uscita = DDT::whereBetween('data', [$start, $end])
@ -222,15 +224,15 @@ echo '
<div class="row">
<div class="col-md-4">
<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">
<span class="info-box-text pull-left">'.tr('Ore lavorate').'</span>';
if ($anagrafica->isTipo('Cliente')) {
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 {
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 '
<br class="clearfix">

View File

@ -32,13 +32,16 @@ class Clienti extends AppResource
public function getModifiedRecords($last_sync_at)
{
$parameters = [];
$query = "SELECT
an_anagrafiche.idanagrafica AS id,
an_anagrafiche.updated_at
FROM an_anagrafiche
INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica = an_anagrafiche.idanagrafica
INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica
WHERE an_tipianagrafiche.descrizione = 'Cliente' AND (an_anagrafiche.deleted_at IS NULL OR an_anagrafiche.idanagrafica IN(SELECT in_interventi.idanagrafica FROM in_interventi))";
$query = 'SELECT
`an_anagrafiche`.`idanagrafica` AS id,
`an_anagrafiche`.`updated_at`
FROM
`an_anagrafiche`
INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` = `an_tipianagrafiche`.`id`
LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche`.`id`=`an_tipianagrafiche_lang`.`id_record` AND `an_tipianagrafiche_lang`.`id_lang`='.setting('Lingua').")
WHERE
`an_tipianagrafiche_lang`.`name` = 'Cliente' AND (`an_anagrafiche`.`deleted_at` IS NULL OR `an_anagrafiche`.`idanagrafica` IN(SELECT `in_interventi`.`idanagrafica` FROM `in_interventi`))";
// Sincronizzazione limitata ai Clienti con Interventi di interesse per il Tecnico corrente
$sincronizza_lavorati = setting('Sincronizza solo i Clienti per cui il Tecnico ha lavorato in passato');
@ -74,32 +77,33 @@ class Clienti extends AppResource
public function retrieveRecord($id)
{
// Gestione della visualizzazione dei dettagli del record
$query = 'SELECT an_anagrafiche.idanagrafica AS id,
an_anagrafiche.ragione_sociale,
an_anagrafiche.tipo,
an_anagrafiche.piva AS partita_iva,
an_anagrafiche.codice_fiscale,
an_anagrafiche.indirizzo,
an_anagrafiche.indirizzo2,
an_anagrafiche.citta,
an_anagrafiche.cap,
an_anagrafiche.provincia,
an_anagrafiche.km,
IFNULL(an_anagrafiche.lat, 0.00) AS latitudine,
IFNULL(an_anagrafiche.lng, 0.00) AS longitudine,
an_nazioni.nome AS nazione,
an_anagrafiche.fax,
an_anagrafiche.telefono,
an_anagrafiche.cellulare,
an_anagrafiche.email,
an_anagrafiche.sitoweb AS sito_web,
an_anagrafiche.note,
an_anagrafiche.deleted_at,
IF(an_anagrafiche.deleted_at IS NULL, 0, 1) AS deleted,
an_anagrafiche.idtipointervento_default AS id_tipo_intervento_default
FROM an_anagrafiche
LEFT OUTER JOIN an_nazioni ON an_anagrafiche.id_nazione = an_nazioni.id
WHERE an_anagrafiche.idanagrafica = '.prepare($id);
$query = 'SELECT `an_anagrafiche`.`idanagrafica` AS id,
`an_anagrafiche`.`ragione_sociale`,
`an_anagrafiche`.`tipo`,
`an_anagrafiche`.`piva` AS partita_iva,
`an_anagrafiche`.`codice_fiscale`,
`an_anagrafiche`.`indirizzo`,
`an_anagrafiche`.`indirizzo2`,
`an_anagrafiche`.`citta`,
`an_anagrafiche`.`cap`,
`an_anagrafiche`.`provincia`,
`an_anagrafiche`.`km`,
IFNULL(`an_anagrafiche`.`lat`, 0.00) AS latitudine,
IFNULL(`an_anagrafiche`.`lng`, 0.00) AS longitudine,
`an_nazioni_lang`.`name` AS nazione,
`an_anagrafiche`.`fax`,
`an_anagrafiche`.`telefono`,
`an_anagrafiche`.`cellulare`,
`an_anagrafiche`.`email`,
`an_anagrafiche`.`sitoweb` AS sito_web,
`an_anagrafiche`.`note`,
`an_anagrafiche`.`deleted_at`,
IF(`an_anagrafiche`.`deleted_at` IS NULL, 0, 1) AS deleted,
`an_anagrafiche`.`idtipointervento_default` AS id_tipo_intervento_default
FROM `an_anagrafiche`
LEFT JOIN `an_nazioni` ON `an_anagrafiche`.`id_nazione` = `an_nazioni`.`id`
LEFT JOIN `an_nazioni_lang` ON (`an_nazioni`.`id` = `an_nazioni_lang`.`id_record` AND `an_nazioni_lang`.`id_lang` = '.prepare(setting('Lingua')).')
WHERE `an_anagrafiche`.`idanagrafica` = '.prepare($id);
$record = database()->fetchOne($query);

View File

@ -44,15 +44,18 @@ class Contratti extends AppResource implements RetrieveInterface
public function getModifiedRecords($last_sync_at)
{
$query = "SELECT
DISTINCT(co_contratti.id) AS id,
co_contratti.updated_at
FROM co_contratti
INNER JOIN co_staticontratti ON co_staticontratti.id = co_contratti.idstato
INNER JOIN an_anagrafiche ON an_anagrafiche.idanagrafica = co_contratti.idanagrafica
INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica = an_anagrafiche.idanagrafica
INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica
WHERE an_tipianagrafiche.descrizione = 'Cliente' AND co_staticontratti.is_pianificabile = 1 AND an_anagrafiche.deleted_at IS NULL";
$query = 'SELECT
DISTINCT(`co_contratti`.`id`) AS id,
`co_contratti`.`updated_at`
FROM
`co_contratti`
INNER JOIN `co_staticontratti` ON `co_staticontratti`.`id` = `co_contratti`.`idstato`
INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `co_contratti`.`idanagrafica`
INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` = `an_tipianagrafiche`.`id`
LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche_lang`.`id_record` = `an_tipianagrafiche`.`id` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).")
WHERE
`an_tipianagrafiche_lang`.`name` = 'Cliente' AND `co_staticontratti`.`is_pianificabile` = 1 AND `an_anagrafiche`.`deleted_at` IS NULL";
// Filtro per data
if ($last_sync_at) {

View File

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

View File

@ -38,24 +38,25 @@ class Login extends Resource implements CreateInterface
$utente = $database->fetchOne('SELECT
`an_anagrafiche`.`idanagrafica` AS id_anagrafica,
`an_anagrafiche`.`ragione_sociale`,
zz_groups.nome AS gruppo
`zz_groups`.`nome` AS gruppo
FROM `zz_users`
INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `zz_users`.`idanagrafica`
INNER JOIN zz_groups ON zz_users.idgruppo=zz_groups.id
INNER JOIN `zz_groups` ON `zz_users`.`idgruppo`=`zz_groups`.`id`
WHERE `an_anagrafiche`.`deleted_at` IS NULL AND `zz_users`.`id` = :id', [
':id' => $user['id'],
]);
} else {
$utente = $database->fetchOne("SELECT
$utente = $database->fetchOne('SELECT
`an_anagrafiche`.`idanagrafica` AS id_anagrafica,
`an_anagrafiche`.`ragione_sociale`,
zz_groups.nome AS gruppo
`zz_groups`.`nome` AS gruppo
FROM `zz_users`
INNER JOIN `an_anagrafiche` ON `an_anagrafiche`.`idanagrafica` = `zz_users`.`idanagrafica`
INNER JOIN an_tipianagrafiche_anagrafiche ON an_tipianagrafiche_anagrafiche.idanagrafica = an_anagrafiche.idanagrafica
INNER JOIN an_tipianagrafiche ON an_tipianagrafiche_anagrafiche.idtipoanagrafica = an_tipianagrafiche.idtipoanagrafica
INNER JOIN zz_groups ON zz_users.idgruppo=zz_groups.id
WHERE an_tipianagrafiche.descrizione = 'Tecnico' AND `an_anagrafiche`.`deleted_at` IS NULL AND `id` = :id", [
INNER JOIN `an_tipianagrafiche_anagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
INNER JOIN `an_tipianagrafiche` ON `an_tipianagrafiche_anagrafiche`.`idtipoanagrafica` = `an_tipianagrafiche`.`id`
LEFT JOIN `an_tipianagrafiche_lang` ON (`an_tipianagrafiche_lang`.`id_record` = `an_tipianagrafiche`.`id` AND `an_tipianagrafiche_lang`.`id_lang` = '.prepare(setting('Lingua')).")
INNER JOIN `zz_groups` ON `zz_users`.`idgruppo`=`zz_groups`.`id`
WHERE `an_tipianagrafiche_lang`.`name` = 'Tecnico' AND `an_anagrafiche`.`deleted_at` IS NULL AND `id` = :id", [
':id' => $user['id'],
]);
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -19,6 +19,7 @@
include_once __DIR__.'/../../core.php';
use Modules\Anagrafiche\Nazione;
use Modules\Contratti\Contratto;
$documento = Contratto::find($id_record);
@ -52,9 +53,9 @@ if (!empty($documento->idsede)) {
$destinazione .= ' ('.$rsd[0]['provincia'].')';
}
if (!empty($rsd[0]['id_nazione'])) {
$nazione = $database->fetchOne('SELECT * FROM an_nazioni WHERE id = '.prepare($rsd[0]['id_nazione']));
$nazione = Nazione::find($rsd[0]['id_nazione']);
if ($nazione['iso2'] != 'IT') {
$destinazione .= ' - '.$nazione['name'];
$destinazione .= ' - '.$nazione->name;
}
}
}

View File

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

View File

@ -19,6 +19,7 @@
include_once __DIR__.'/../../core.php';
use Modules\Anagrafiche\Nazione;
use Modules\Fatture\Fattura;
$documento = Fattura::find($id_record);
@ -91,9 +92,9 @@ if (!empty($record['idsede_destinazione'])) {
$destinazione .= ' ('.$rsd[0]['provincia'].')';
}
if (!empty($rsd[0]['id_nazione'])) {
$nazione = $database->fetchOne('SELECT * FROM an_nazioni WHERE id = '.prepare($rsd[0]['id_nazione']));
$nazione = Nazione::find($rsd[0]['id_nazione']);
if ($nazione['iso2'] != 'IT') {
$destinazione .= ' - '.$nazione['name'];
$destinazione .= ' - '.$nazione->name;
}
}
}

View File

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

View File

@ -19,6 +19,7 @@
include_once __DIR__.'/../../core.php';
use Modules\Anagrafiche\Nazione;
use Modules\Ordini\Ordine;
$documento = Ordine::find($id_record);
@ -52,9 +53,9 @@ if (!empty($documento->idsede)) {
$destinazione .= ' ('.$rsd[0]['provincia'].')';
}
if (!empty($rsd[0]['id_nazione'])) {
$nazione = $database->fetchOne('SELECT * FROM an_nazioni WHERE id = '.prepare($rsd[0]['id_nazione']));
$nazione = Nazione::find($rsd[0]['id_nazione']);
if ($nazione['iso2'] != 'IT') {
$destinazione .= ' - '.$nazione['name'];
$destinazione .= ' - '.$nazione->name;
}
}
}

View File

@ -19,6 +19,7 @@
include_once __DIR__.'/../../core.php';
use Modules\Anagrafiche\Nazione;
use Modules\Preventivi\Preventivo;
$documento = Preventivo::find($id_record);
@ -52,9 +53,9 @@ if (!empty($documento->idsede)) {
$destinazione .= ' ('.$rsd[0]['provincia'].')';
}
if (!empty($rsd[0]['id_nazione'])) {
$nazione = $database->fetchOne('SELECT * FROM an_nazioni WHERE id = '.prepare($rsd[0]['id_nazione']));
$nazione = Nazione::find($rsd[0]['id_nazione']);
if ($nazione['iso2'] != 'IT') {
$destinazione .= ' - '.$nazione['name'];
$destinazione .= ' - '.$nazione->name;
}
}
}

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_agenti',
'an_nazioni',
'an_nazioni_lang',
'an_mansioni',
'an_referenti',
'an_regioni',
'an_regioni_lang',
'an_relazioni',
'an_relazioni_lang',
'an_provenienze',
'an_provenienze_lang',
'an_settori',
'an_sedi',
'an_tipianagrafiche',
'an_tipianagrafiche_anagrafiche',
'an_tipianagrafiche_lang',
'an_zone',
'an_pagamenti_anagrafiche',
'an_sedi_tecnici',