mirror of
https://github.com/devcode-it/openstamanager.git
synced 2025-02-16 19:40:44 +01:00
Adeguamento per l'applicazione
This commit is contained in:
parent
119e21c8f6
commit
0a3cc1ca9b
@ -64,6 +64,10 @@ try {
|
||||
} catch (InvalidArgumentException $e) {
|
||||
$result = API::error('unauthorized');
|
||||
} catch (Exception $e) {
|
||||
// Log dell'errore
|
||||
$logger = logger();
|
||||
$logger->addRecord(\Monolog\Logger::ERROR, $e);
|
||||
|
||||
$result = API::error('serverError');
|
||||
}
|
||||
|
||||
|
@ -8,42 +8,55 @@ switch ($resource) {
|
||||
$order[] = 'idanagrafica';
|
||||
}
|
||||
|
||||
if (empty($where['deleted'])) {
|
||||
$where['deleted'] = 0;
|
||||
if (empty($where['deleted_at'])) {
|
||||
$where['deleted_at'] = null;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
// Elenco clienti per l'applicazione
|
||||
case 'clienti':
|
||||
$q = 'SELECT AN.idanagrafica,
|
||||
AN.ragione_sociale,
|
||||
AN.piva,
|
||||
AN.codice_fiscale,
|
||||
AN.indirizzo,
|
||||
AN.indirizzo2,
|
||||
AN.citta,
|
||||
AN.cap,
|
||||
AN.provincia,
|
||||
AN.km,
|
||||
IFNULL(AN.lat, 0.00) AS latitudine,
|
||||
IFNULL(AN.lng, 0.00) AS longitudine,
|
||||
NAZIONE.nome AS nazione,
|
||||
AN.telefono,
|
||||
AN.fax,
|
||||
AN.cellulare,
|
||||
AN.email,
|
||||
AN.sitoweb,
|
||||
AN.note,
|
||||
AN.idzona,
|
||||
AN.deleted_at
|
||||
FROM (an_anagrafiche AS AN
|
||||
LEFT OUTER JOIN an_nazioni NAZIONE ON AN.id_nazione=NAZIONE.id)
|
||||
HAVING 1=1 AND
|
||||
AN.deleted_at IS NULL AND
|
||||
AN.idanagrafica IN (SELECT idanagrafica FROM an_tipianagrafiche_anagrafiche WHERE idtipoanagrafica=1)
|
||||
ORDER BY AN.ragione_sociale';
|
||||
$query = "SELECT an_anagrafiche.idanagrafica AS id,
|
||||
an_anagrafiche.ragione_sociale,
|
||||
an_anagrafiche.piva,
|
||||
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.telefono,
|
||||
an_anagrafiche.fax,
|
||||
an_anagrafiche.cellulare,
|
||||
an_anagrafiche.email,
|
||||
an_anagrafiche.sitoweb,
|
||||
an_anagrafiche.note,
|
||||
an_anagrafiche.idzona,
|
||||
an_anagrafiche.deleted_at
|
||||
FROM an_anagrafiche
|
||||
LEFT OUTER JOIN an_nazioni ON an_anagrafiche.id_nazione=an_nazioni.id
|
||||
WHERE
|
||||
an_anagrafiche.deleted_at IS NULL AND
|
||||
an_anagrafiche.idanagrafica IN (SELECT idanagrafica FROM an_tipianagrafiche_anagrafiche WHERE idtipoanagrafica = (SELECT idtipoanagrafica FROM an_tipianagrafiche WHERE descrizione = 'Cliente'))
|
||||
ORDER BY an_anagrafiche.ragione_sociale";
|
||||
|
||||
$results = $dbo->fetchArray($q);
|
||||
$results = $dbo->fetchArray($query);
|
||||
|
||||
$results['records'] = $database->fetchNum($query);
|
||||
$results['pages'] = $results['records'] / $length;
|
||||
break;
|
||||
|
||||
// Elenco sedi per l'applicazione
|
||||
case 'sedi':
|
||||
$table = 'an_sedi';
|
||||
|
||||
if (empty($order)) {
|
||||
$order[] = 'id';
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
@ -51,4 +64,5 @@ switch ($resource) {
|
||||
return [
|
||||
'an_anagrafiche',
|
||||
'clienti',
|
||||
'sedi',
|
||||
];
|
||||
|
@ -44,54 +44,39 @@ switch ($resource) {
|
||||
|
||||
break;
|
||||
|
||||
// per APP ufficiale OpenSTAManager
|
||||
// Elenco interventi per l'applicazione (recupero sempre tutti gli interventi che non vengono chiusi)
|
||||
case 'interventi':
|
||||
|
||||
// periodo per selezionare interventi
|
||||
// in questo modo recupero sempre tutti gli interventi che non vengono chiusi
|
||||
// vedi anche lista degli stati intervento presenti nella query
|
||||
// se un intervento è stato pre-chiuso dal tecnico oppure chiuso dall'ufficio non viene scaricato da APP
|
||||
// Periodo per selezionare interventi
|
||||
$today = date('Y-m-d');
|
||||
$period_start = '2000-01-01';
|
||||
$period_end = date('Y-m-d', strtotime($today.' +7 days'));
|
||||
|
||||
$q = "SELECT `in_interventi`.id,
|
||||
`in_interventi`.codice,
|
||||
DATE_FORMAT( MAX(`in_interventi`.`data_richiesta`), '%Y%m%d' ) AS `data_richiesta`,
|
||||
`in_interventi`.richiesta,
|
||||
`in_interventi`.descrizione,
|
||||
`in_interventi`.idtipointervento,
|
||||
`in_interventi`.idanagrafica,
|
||||
`an_anagrafiche`.idzona AS zona_anagrafica,
|
||||
`in_interventi`.idsede,
|
||||
`an_sedi`.idzona AS zona_sede,
|
||||
`in_interventi`.idstatointervento,
|
||||
`in_interventi`.informazioniaggiuntive,
|
||||
`in_interventi`.idsede,
|
||||
`in_interventi`.idclientefinale,
|
||||
`in_interventi`.firma_file,
|
||||
IF( MAX(firma_data)='0000-00-00 00:00:00', '', DATE_FORMAT(MAX(firma_data),'%d/%m/%Y %T') ) AS `firma_data`,
|
||||
`in_interventi`.firma_nome,
|
||||
IFNULL((SELECT GROUP_CONCAT( CONCAT(my_impianti.matricola, ' - ', my_impianti.nome) SEPARATOR ', ')
|
||||
FROM (my_impianti_interventi INNER JOIN my_impianti ON my_impianti_interventi.idimpianto=my_impianti.id)
|
||||
WHERE my_impianti_interventi.idintervento=`in_interventi`.`id`),'') AS `impianti`,
|
||||
DATE_FORMAT( MAX(`orario_fine`), '%Y%m%d' ) AS `data`,
|
||||
(SELECT GROUP_CONCAT(ragione_sociale SEPARATOR ', ') FROM (`in_interventi_tecnici` INNER JOIN `an_anagrafiche` ON `in_interventi_tecnici`.`idtecnico`=`an_anagrafiche`.`idanagrafica`) WHERE `in_interventi_tecnici`.`idintervento`=`in_interventi`.`id`) AS `tecnici`,
|
||||
`in_statiintervento`.`colore` AS `bgcolor`,
|
||||
`in_statiintervento`.`descrizione` AS `stato`,
|
||||
`in_interventi`.`idtipointervento` AS `tipo`,
|
||||
DATE_FORMAT( MAX(`orario_inizio`), '%d/%m/%Y %T' ) AS `orario_inizio_leggibile`,
|
||||
DATE_FORMAT( MAX(`orario_fine`), '%d/%m/%Y %T' ) AS `orario_fine_leggibile`,
|
||||
`orario_inizio`, `orario_fine`
|
||||
FROM (`in_interventi`
|
||||
INNER JOIN `in_statiintervento` ON `in_interventi`.`idstatointervento`=`in_statiintervento`.`idstatointervento`)
|
||||
INNER JOIN `in_interventi_tecnici` ON `in_interventi_tecnici`.`idintervento`=`in_interventi`.`id`
|
||||
INNER JOIN `an_anagrafiche` ON `in_interventi`.`idanagrafica`=`an_anagrafiche`.`idanagrafica`
|
||||
LEFT OUTER JOIN `an_sedi` ON `in_interventi`.`idsede`=`an_sedi`.`id`
|
||||
GROUP BY `in_interventi`.`id`
|
||||
HAVING (DATE_FORMAT( `orario_fine`, '%Y-%m-%d' ) >= '".$period_start."' AND
|
||||
DATE_FORMAT( `orario_fine`, '%Y-%m-%d' ) <= '".$period_end."')
|
||||
ORDER BY `orario_fine` DESC";
|
||||
$query = "SELECT `in_interventi`.`id`,
|
||||
`in_interventi`.`codice`,
|
||||
DATE_FORMAT(`in_interventi`.`data_richiesta`, '%Y%m%d') AS `data_richiesta`,
|
||||
`in_interventi`.`richiesta`,
|
||||
`in_interventi`.`descrizione`,
|
||||
`in_interventi`.`idtipointervento`,
|
||||
`in_interventi`.`idanagrafica`,
|
||||
`an_anagrafiche`.`idzona` AS zona_anagrafica,
|
||||
`in_interventi`.`idsede`,
|
||||
`an_sedi`.`idzona` AS zona_sede,
|
||||
`in_interventi`.`idstatointervento`,
|
||||
`in_interventi`.`informazioniaggiuntive`,
|
||||
`in_interventi`.`idclientefinale`,
|
||||
`in_interventi`.`firma_file`,
|
||||
IF(firma_data = '0000-00-00 00:00:00', '', DATE_FORMAT(firma_data,'%d/%m/%Y %T') ) AS `firma_data`,
|
||||
`in_interventi`.firma_nome,
|
||||
(SELECT GROUP_CONCAT( CONCAT(my_impianti.matricola, ' - ', my_impianti.nome) SEPARATOR ', ') FROM (my_impianti_interventi INNER JOIN my_impianti ON my_impianti_interventi.idimpianto=my_impianti.id) WHERE my_impianti_interventi.idintervento=`in_interventi`.`id`) AS `impianti`,
|
||||
(SELECT DATE_FORMAT(MAX(`orario_fine`), '%Y%m%d') FROM `in_interventi_tecnici` WHERE `in_interventi_tecnici`.`idintervento`=`in_interventi`.`id`) AS `data`,
|
||||
(SELECT GROUP_CONCAT(ragione_sociale SEPARATOR ', ') FROM `in_interventi_tecnici` INNER JOIN `an_anagrafiche` ON `in_interventi_tecnici`.`idtecnico`=`an_anagrafiche`.`idanagrafica` WHERE `in_interventi_tecnici`.`idintervento`=`in_interventi`.`id`) AS `tecnici`,
|
||||
`in_statiintervento`.`colore` AS `bgcolor`,
|
||||
`in_statiintervento`.`descrizione` AS `stato`,
|
||||
`in_interventi`.`idtipointervento` AS `tipo`
|
||||
FROM `in_interventi`
|
||||
INNER JOIN `in_statiintervento` ON `in_interventi`.`idstatointervento`=`in_statiintervento`.`idstatointervento`
|
||||
INNER JOIN `an_anagrafiche` ON `in_interventi`.`idanagrafica`=`an_anagrafiche`.`idanagrafica`
|
||||
INNER JOIN `an_sedi` ON `in_interventi`.`idsede`=`an_sedi`.`id`
|
||||
WHERE (SELECT MAX(`orario_fine`) FROM `in_interventi_tecnici` WHERE `in_interventi_tecnici`.`idintervento`=`in_interventi`.`id`) <= :period_end";
|
||||
|
||||
// TODO: rimosse seguenti clausole:
|
||||
|
||||
@ -101,7 +86,14 @@ switch ($resource) {
|
||||
// AND `in_interventi_tecnici`.`idtecnico`='".$tecnico[0]['idanagrafica']."'
|
||||
// nell'inner join con in_interventi_tecnici -> ad oggi 16-05-2018 non gestisco ancora idtecnico
|
||||
|
||||
$results = $dbo->fetchArray($q);
|
||||
$parameters = [
|
||||
':period_end' => $period_end,
|
||||
];
|
||||
|
||||
$results = $dbo->fetchArray($query, $parameters);
|
||||
|
||||
$results['records'] = $database->fetchNum($query, $parameters);
|
||||
$results['pages'] = $results['records'] / $length;
|
||||
|
||||
break;
|
||||
}
|
||||
|
@ -74,12 +74,7 @@ switch (post('op')) {
|
||||
$numero = get_new_numerofattura($data);
|
||||
|
||||
$numero_esterno = get_new_numerosecondariofattura($data);
|
||||
<<<<<<< HEAD
|
||||
$idconto = setting('Conto predefinito fatture di vendita');
|
||||
=======
|
||||
|
||||
$idconto = get_var('Conto predefinito fatture di vendita');
|
||||
>>>>>>> master
|
||||
|
||||
$campo = ($dir == 'entrata') ? 'idpagamento_vendite' : 'idpagamento_acquisti';
|
||||
|
||||
|
22
modules/stati_intervento/api/retrieve.php
Normal file
22
modules/stati_intervento/api/retrieve.php
Normal file
@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
switch ($resource) {
|
||||
// Elenco sedi per l'applicazione
|
||||
case 'stati_intervento':
|
||||
$table = 'in_statiintervento';
|
||||
|
||||
$select = [
|
||||
'*',
|
||||
'id' => 'idstatointervento',
|
||||
];
|
||||
|
||||
if (empty($where['deleted_at'])) {
|
||||
$where['deleted_at'] = null;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
return [
|
||||
'stati_intervento',
|
||||
];
|
18
modules/tipi_intervento/api/retrieve.php
Normal file
18
modules/tipi_intervento/api/retrieve.php
Normal file
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
switch ($resource) {
|
||||
// Elenco sedi per l'applicazione
|
||||
case 'tipi_intervento':
|
||||
$table = 'in_tipiintervento';
|
||||
|
||||
$select = [
|
||||
'*',
|
||||
'id' => 'idtipointervento',
|
||||
];
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
return [
|
||||
'tipi_intervento',
|
||||
];
|
@ -4,6 +4,7 @@ switch ($resource) {
|
||||
case 'login':
|
||||
// Controllo sulle credenziali
|
||||
if (Auth::getInstance()->attempt($request['username'], $request['password'])) {
|
||||
$user = Auth::getInstance()->getUser();
|
||||
$token = Auth::getInstance()->getToken();
|
||||
|
||||
// Informazioni da restituire tramite l'API
|
||||
|
54
src/API.php
54
src/API.php
@ -101,33 +101,33 @@ class API extends \Util\Singleton
|
||||
$resources = self::getResources()[$kind];
|
||||
$resource = $request['resource'];
|
||||
|
||||
if (in_array($resource, array_keys($resources))) {
|
||||
$dbo = $database;
|
||||
try {
|
||||
if (in_array($resource, array_keys($resources))) {
|
||||
$dbo = $database;
|
||||
|
||||
// Esecuzione delle operazioni personalizzate
|
||||
$filename = DOCROOT.'/modules/'.$resources[$resource].'/api/'.$kind.'.php';
|
||||
include $filename;
|
||||
} elseif (
|
||||
!in_array($resource, explode(',', setting('Tabelle escluse per la sincronizzazione API automatica')))
|
||||
&& $database->tableExists($resource)
|
||||
) {
|
||||
$table = $resource;
|
||||
// Esecuzione delle operazioni personalizzate
|
||||
$filename = DOCROOT.'/modules/'.$resources[$resource].'/api/'.$kind.'.php';
|
||||
include $filename;
|
||||
} elseif (
|
||||
!in_array($resource, explode(',', setting('Tabelle escluse per la sincronizzazione API automatica')))
|
||||
&& $database->tableExists($resource)
|
||||
) {
|
||||
$table = $resource;
|
||||
|
||||
// Individuazione della colonna AUTO_INCREMENT per l'ordinamento automatico
|
||||
if (empty($order)) {
|
||||
$column = $database->fetchArray('SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '.prepare($table)." AND EXTRA LIKE '%AUTO_INCREMENT%' AND TABLE_SCHEMA = ".prepare($database->getDatabaseName()));
|
||||
// Individuazione della colonna AUTO_INCREMENT per l'ordinamento automatico
|
||||
if (empty($order)) {
|
||||
$column = $database->fetchArray('SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '.prepare($table)." AND EXTRA LIKE '%AUTO_INCREMENT%' AND TABLE_SCHEMA = ".prepare($database->getDatabaseName()));
|
||||
|
||||
if (!empty($column)) {
|
||||
$order[] = $column[0]['COLUMN_NAME'];
|
||||
if (!empty($column)) {
|
||||
$order[] = $column[0]['COLUMN_NAME'];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return self::error('notFound');
|
||||
}
|
||||
} else {
|
||||
return self::error('notFound');
|
||||
}
|
||||
|
||||
// Generazione automatica delle query
|
||||
if (empty($results) && !empty($table)) {
|
||||
try {
|
||||
// Generazione automatica delle query
|
||||
if (empty($results) && !empty($table)) {
|
||||
// Date di interesse
|
||||
if (!empty($request['upd'])) {
|
||||
$where['#updated_at'] = 'updated_at >= '.prepare($request['upd']);
|
||||
@ -146,13 +146,13 @@ class API extends \Util\Singleton
|
||||
$results['records'] = $cont[0]['records'];
|
||||
$results['pages'] = $cont[0]['pages'];
|
||||
}
|
||||
} catch (PDOException $e) {
|
||||
// Log dell'errore
|
||||
$logger = logger();
|
||||
$logger->addRecord(\Monolog\Logger::ERROR, $e);
|
||||
|
||||
return self::error('internalError');
|
||||
}
|
||||
} catch (PDOException $e) {
|
||||
// Log dell'errore
|
||||
$logger = logger();
|
||||
$logger->addRecord(\Monolog\Logger::ERROR, $e);
|
||||
|
||||
return self::error('internalError');
|
||||
}
|
||||
|
||||
return self::response($results);
|
||||
|
@ -308,7 +308,9 @@ class Auth extends \Util\Singleton
|
||||
session_unset();
|
||||
session_regenerate_id();
|
||||
|
||||
flash()->clearMessages();
|
||||
if (!API::isAPIRequest()) {
|
||||
flash()->clearMessages();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -520,7 +520,7 @@ class Database extends Util\Singleton
|
||||
// Valori da ottenere
|
||||
$select = [];
|
||||
foreach ((array) $array as $key => $value) {
|
||||
$select[] = $value.(is_numeric($key) ? '' : 'AS '.$this->quote($key));
|
||||
$select[] = $value.(is_numeric($key) ? '' : ' AS '.$this->quote($key));
|
||||
}
|
||||
$select = !empty($select) ? $select : ['*'];
|
||||
|
||||
@ -833,7 +833,7 @@ class Database extends Util\Singleton
|
||||
'throw' => true,
|
||||
], $options);
|
||||
|
||||
if (!empty($options['session'])) {
|
||||
if (!empty($options['session']) && !API::isAPIRequest()) {
|
||||
$msg = tr("Si è verificato un'errore").'.';
|
||||
|
||||
if (Auth::check()) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user