From 129260bc942201deb84c60f8f4b34eddb0a34a35 Mon Sep 17 00:00:00 2001 From: Dasc3er Date: Wed, 14 Jul 2021 16:49:30 +0200 Subject: [PATCH] Aggiunta segnalazione bug per Applicazione da API Correzioni minori sulle API relative. --- src/API/App/v1/Clienti.php | 2 +- src/API/App/v1/Interventi.php | 1 + src/API/App/v1/Revisione.php | 2 +- src/API/App/v1/SegnalazioneBug.php | 79 ++++++++++++++++++++++++++++++ update/2_4_24.sql | 64 +++++++++++++++++++++--- 5 files changed, 139 insertions(+), 9 deletions(-) create mode 100644 src/API/App/v1/SegnalazioneBug.php diff --git a/src/API/App/v1/Clienti.php b/src/API/App/v1/Clienti.php index bd3af2450..0287be8e7 100644 --- a/src/API/App/v1/Clienti.php +++ b/src/API/App/v1/Clienti.php @@ -46,7 +46,7 @@ class Clienti extends AppResource // Elenco di interventi di interesse $risorsa_interventi = $this->getRisorsaInterventi(); // Da applicazione, i Clienti sono sincronizzati prima degli Interventi: last_sync_at permette di identificare le stesse modifiche - $interventi = $risorsa_interventi->getModifiedRecords($last_sync_at); + $interventi = $risorsa_interventi->getModifiedRecords(null); if (empty($interventi)) { return []; } diff --git a/src/API/App/v1/Interventi.php b/src/API/App/v1/Interventi.php index e95a32616..a6c6999ce 100644 --- a/src/API/App/v1/Interventi.php +++ b/src/API/App/v1/Interventi.php @@ -149,6 +149,7 @@ class Interventi extends AppResource codice, richiesta, data_richiesta, + data_scadenza, descrizione, idanagrafica AS id_cliente, id_contratto, diff --git a/src/API/App/v1/Revisione.php b/src/API/App/v1/Revisione.php index 2e9792bf4..860308c17 100644 --- a/src/API/App/v1/Revisione.php +++ b/src/API/App/v1/Revisione.php @@ -24,7 +24,7 @@ use API\Resource; class Revisione extends Resource implements RetrieveInterface { - const REVISION = '1.1'; + const REVISION = '1.2'; public function retrieve($request) { diff --git a/src/API/App/v1/SegnalazioneBug.php b/src/API/App/v1/SegnalazioneBug.php new file mode 100644 index 000000000..f3525bbb7 --- /dev/null +++ b/src/API/App/v1/SegnalazioneBug.php @@ -0,0 +1,79 @@ +. + */ + +namespace API\App\v1; + +use API\Interfaces\CreateInterface; +use API\Interfaces\RetrieveInterface; +use API\Resource; +use Modules\Emails\Account; +use Modules\Emails\Mail; +use Modules\Emails\Template; +use Notifications\EmailNotification; + +class SegnalazioneBug extends Resource implements RetrieveInterface, CreateInterface +{ + protected static $bug_email = 'info@openstamanager.com'; + + public function retrieve($request) + { + $account = Account::where('predefined', true)->first(); + + return [ + 'sender' => [ + 'name' => $account['from_name'], + 'email' => $account['from_address'], + ], + 'receiver' => self::$bug_email, + ]; + } + + public function create($request) + { + $account = Account::where('predefined', true)->first(); + + // Preparazione email + $mail = new EmailNotification($account); + + // Destinatario + $mail->AddAddress(self::$bug_email); + + // Oggetto + $mail->subject = 'Segnalazione bug App OSM '.$request['version']; + + $infos = [ + + ]; + + $body = ''; + foreach ($infos as $key => $value) { + $body .= '

'.$key.': '.$value.'

'; + } + + // Contenuti + $mail->content = $body; + + // Tentativo di invio diretto + $email_success = $mail->send(); + + return [ + 'sent' => $email_success, + ]; + } +} diff --git a/update/2_4_24.sql b/update/2_4_24.sql index beec153c3..cffc445c5 100644 --- a/update/2_4_24.sql +++ b/update/2_4_24.sql @@ -7,14 +7,14 @@ UPDATE `zz_views` SET `format`=1 WHERE `zz_views`.`name`='Data' AND `zz_views`.` -- Colonna stato per newsletter INSERT INTO `zz_views` ( `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES -((SELECT `id` FROM `zz_modules` WHERE name='Newsletter'), 'Stato', 'IF(em_newsletters.state = \'DEV\', \'Bozza\', IF(em_newsletters.state = \'WAIT\', \'Invio in corso\', \'Completata\'))', 4, 1, 0, 0, '', '', 1, 0, 0); +((SELECT `id` FROM `zz_modules` WHERE name='Newsletter'), 'Stato', 'IF(em_newsletters.state = ''DEV'', ''Bozza'', IF(em_newsletters.state = ''WAIT'', ''Invio in corso'', ''Completata''))', 4, 1, 0, 0, '', '', 1, 0, 0); -- Colonna destinatari per newsletter INSERT INTO `zz_views` ( `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES ((SELECT `id` FROM `zz_modules` WHERE name='Newsletter'), 'Destinatari', '(SELECT COUNT(*) FROM `em_newsletter_anagrafica` WHERE `em_newsletter_anagrafica`.`id_newsletter` = `em_newsletters`.`id`)', 5, 1, 0, 0, '', '', 1, 0, 0); -- Aggiorno colonna completato per newsletter -UPDATE `zz_views` SET `query` = 'IF(completed_at IS NULL, \'No\', CONCAT(\'Sì \', \'(\', DATE_FORMAT(completed_at, \'%d/%m/%Y %H:%i:%s\' ), \')\'))', `order` = 6 WHERE `zz_views`.`id_module` = (SELECT `id` FROM `zz_modules` WHERE name='Newsletter') AND `name` = 'Completato'; +UPDATE `zz_views` SET `query` = 'IF(completed_at IS NULL, ''No'', CONCAT(''Sì '', ''('', DATE_FORMAT(completed_at, ''%d/%m/%Y %H:%i:%s'' ), '')''))', `order` = 6 WHERE `zz_views`.`id_module` = (SELECT `id` FROM `zz_modules` WHERE name='Newsletter') AND `name` = 'Completato'; -- Visualizza informazioni aggiuntive sul calendario INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES (NULL, 'Visualizza informazioni aggiuntive sul calendario', '0', 'boolean', '1', 'Dashboard', '1', 'Visualizza sul calendario il box Tutto il giorno dove possono essere presenti informazioni aggiuntve'); @@ -46,7 +46,7 @@ INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, ` -- Aggiunta vista scaduto in scadenzario INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES -((SELECT `zz_modules`.`id` FROM `zz_modules` WHERE `zz_modules`.`name`='Scadenzario' ), 'Scaduto', 'IF(pagato = da_pagare, \'NO\', IF(data_concordata IS NOT NULL AND data_concordata > NOW(), \'NO\', IF(scadenza < NOW(), \'SÌ\', \'NO\')))', 14, 1, 0, 0, '', '', 1, 0, 0); +((SELECT `zz_modules`.`id` FROM `zz_modules` WHERE `zz_modules`.`name`='Scadenzario' ), 'Scaduto', 'IF(pagato = da_pagare, ''NO'', IF(data_concordata IS NOT NULL AND data_concordata > NOW(), ''NO'', IF(scadenza < NOW(), ''SÌ'', ''NO'')))', 14, 1, 0, 0, '', '', 1, 0, 0); INSERT INTO `zz_group_view` (`id_gruppo`, `id_vista`) (SELECT `zz_groups`.`id`, `zz_views`.`id` FROM `zz_groups`, `zz_views` INNER JOIN `zz_modules` ON `zz_views`.`id_module` = `zz_modules`.`id` WHERE `zz_modules`.`name` = 'Scadenzario' AND `zz_views`.`name` = 'Scaduto'); @@ -63,7 +63,7 @@ UPDATE `co_righe_preventivi` SET `confermato` = 1; INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES (NULL, 'Conferma automaticamente le quantità nei preventivi', '1', 'boolean', '1', 'Preventivi', NULL, NULL); -- Aggiunta vista "Esigibilità" per il modulo "IVA" INSERT INTO `zz_views` (`id`, `id_module`, `name`, `query`, `order`, `search`, `slow`, `format`, `search_inside`, `order_by`, `visible`, `summable`, `default`) VALUES -(NULL, (SELECT `zz_modules`.`id` FROM `zz_modules` WHERE `zz_modules`.`name`='IVA'), 'Esigibilità', 'IF(esigibilita=\'I\', \'IVA ad esigibilità immediata\', IF(esigibilita=\'D\', \'IVA ad esigibilità differita\', \'Scissione dei pagamenti\'))', 5, 1, 0, 0, '', '', 1, 0, 0); +(NULL, (SELECT `zz_modules`.`id` FROM `zz_modules` WHERE `zz_modules`.`name`='IVA'), 'Esigibilità', 'IF(esigibilita=''I'', ''IVA ad esigibilità immediata'', IF(esigibilita=''D'', ''IVA ad esigibilità differita'', ''Scissione dei pagamenti''))', 5, 1, 0, 0, '', '', 1, 0, 0); -- Gestione righe da documenti esterni INSERT INTO `zz_settings` (`nome`, `valore`, `tipo`, `editable`, `sezione`, `order`, `help`) VALUES ('Permetti il superamento della soglia quantità dei documenti di origine', '0', 'boolean', '1', 'Generali', '20', NULL); @@ -73,9 +73,57 @@ INSERT INTO `zz_views` ( `id_module`, `name`, `query`, `order`, `search`, `slow` ((SELECT `id` FROM `zz_modules` WHERE name='Ordini cliente'), 'Rif. fattura', 'fattura.info', 11, 1, 0, 0, '', '', 1, 0, 0), ((SELECT `id` FROM `zz_modules` WHERE name='Ordini fornitore'), 'Rif. fattura', 'fattura.info', 8, 1, 0, 0, '', '', 1, 0, 0); -UPDATE `zz_modules` SET `options` = 'SELECT |select|\nFROM `or_ordini`\n LEFT JOIN `an_anagrafiche` ON `or_ordini`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`\n LEFT JOIN `or_tipiordine` ON `or_ordini`.`idtipoordine` = `or_tipiordine`.`id`\n LEFT JOIN (\n SELECT `idordine`,\n SUM(`qta` - `qta_evasa`) AS `qta_da_evadere`,\n SUM(`subtotale` - `sconto`) AS `totale_imponibile`,\n SUM(`subtotale` - `sconto` + `iva`) AS `totale`\n FROM `or_righe_ordini`\n GROUP BY `idordine`\n ) AS righe ON `or_ordini`.`id` = `righe`.`idordine`\n LEFT JOIN (\n SELECT `idordine`,\n MIN(`data_evasione`) AS `data_evasione`\n FROM `or_righe_ordini`\n WHERE (`qta` - `qta_evasa`)>0\n GROUP BY `idordine`\n ) AS `righe_da_evadere` ON `righe`.`idordine`=`righe_da_evadere`.`idordine`\n LEFT JOIN (\n SELECT GROUP_CONCAT(co_documenti.numero_esterno SEPARATOR \", \") AS info, co_righe_documenti.idordine FROM co_documenti INNER JOIN co_righe_documenti ON co_documenti.id = co_righe_documenti.iddocumento GROUP BY idordine\n) AS fattura ON fattura.idordine = or_ordini.id\nWHERE 1=1 AND `dir` = \'entrata\' |date_period(`data`)|\nHAVING 2=2\nORDER BY `data` DESC, CAST(`numero_esterno` AS UNSIGNED) DESC' WHERE `zz_modules`.`name` = 'Ordini cliente'; +UPDATE `zz_modules` SET `options` = 'SELECT |select| +FROM `or_ordini` + LEFT JOIN `an_anagrafiche` ON `or_ordini`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` + LEFT JOIN `or_tipiordine` ON `or_ordini`.`idtipoordine` = `or_tipiordine`.`id` + LEFT JOIN ( + SELECT `idordine`, + SUM(`qta` - `qta_evasa`) AS `qta_da_evadere`, + SUM(`subtotale` - `sconto`) AS `totale_imponibile`, + SUM(`subtotale` - `sconto` + `iva`) AS `totale` + FROM `or_righe_ordini` + GROUP BY `idordine` + ) AS righe ON `or_ordini`.`id` = `righe`.`idordine` + LEFT JOIN ( + SELECT `idordine`, + MIN(`data_evasione`) AS `data_evasione` + FROM `or_righe_ordini` + WHERE (`qta` - `qta_evasa`)>0 + GROUP BY `idordine` + ) AS `righe_da_evadere` ON `righe`.`idordine`=`righe_da_evadere`.`idordine` + LEFT JOIN ( + SELECT GROUP_CONCAT(co_documenti.numero_esterno SEPARATOR \", \") AS info, co_righe_documenti.idordine FROM co_documenti INNER JOIN co_righe_documenti ON co_documenti.id = co_righe_documenti.iddocumento GROUP BY idordine +) AS fattura ON fattura.idordine = or_ordini.id +WHERE 1=1 AND `dir` = ''entrata'' |date_period(`data`)| +HAVING 2=2 +ORDER BY `data` DESC, CAST(`numero_esterno` AS UNSIGNED) DESC' WHERE `zz_modules`.`name` = 'Ordini cliente'; -UPDATE `zz_modules` SET `options` = 'SELECT |select|\nFROM `or_ordini`\n LEFT JOIN `an_anagrafiche` ON `or_ordini`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`\n LEFT JOIN `or_tipiordine` ON `or_ordini`.`idtipoordine` = `or_tipiordine`.`id`\n LEFT JOIN (\n SELECT `idordine`,\n SUM(`qta` - `qta_evasa`) AS `qta_da_evadere`,\n SUM(`subtotale` - `sconto`) AS `totale_imponibile`,\n SUM(`subtotale` - `sconto` + `iva`) AS `totale`\n FROM `or_righe_ordini`\n GROUP BY `idordine`\n ) AS righe ON `or_ordini`.`id` = `righe`.`idordine`\n LEFT JOIN (\n SELECT `idordine`,\n MIN(`data_evasione`) AS `data_evasione`\n FROM `or_righe_ordini`\n WHERE (`qta` - `qta_evasa`)>0\n GROUP BY `idordine`\n ) AS `righe_da_evadere` ON `righe`.`idordine`=`righe_da_evadere`.`idordine`\n LEFT JOIN (\n SELECT GROUP_CONCAT(co_documenti.numero_esterno SEPARATOR \", \") AS info, co_righe_documenti.idordine FROM co_documenti INNER JOIN co_righe_documenti ON co_documenti.id = co_righe_documenti.iddocumento GROUP BY idordine\n) AS fattura ON fattura.idordine = or_ordini.id\nWHERE 1=1 AND `dir` = \'uscita\' |date_period(`data`)|\nHAVING 2=2\nORDER BY `data` DESC, CAST(`numero_esterno` AS UNSIGNED) DESC' WHERE `zz_modules`.`name` = 'Ordini fornitore'; +UPDATE `zz_modules` SET `options` = 'SELECT |select| +FROM `or_ordini` + LEFT JOIN `an_anagrafiche` ON `or_ordini`.`idanagrafica` = `an_anagrafiche`.`idanagrafica` + LEFT JOIN `or_tipiordine` ON `or_ordini`.`idtipoordine` = `or_tipiordine`.`id` + LEFT JOIN ( + SELECT `idordine`, + SUM(`qta` - `qta_evasa`) AS `qta_da_evadere`, + SUM(`subtotale` - `sconto`) AS `totale_imponibile`, + SUM(`subtotale` - `sconto` + `iva`) AS `totale` + FROM `or_righe_ordini` + GROUP BY `idordine` + ) AS righe ON `or_ordini`.`id` = `righe`.`idordine` + LEFT JOIN ( + SELECT `idordine`, + MIN(`data_evasione`) AS `data_evasione` + FROM `or_righe_ordini` + WHERE (`qta` - `qta_evasa`)>0 + GROUP BY `idordine` + ) AS `righe_da_evadere` ON `righe`.`idordine`=`righe_da_evadere`.`idordine` + LEFT JOIN ( + SELECT GROUP_CONCAT(co_documenti.numero_esterno SEPARATOR \", \") AS info, co_righe_documenti.idordine FROM co_documenti INNER JOIN co_righe_documenti ON co_documenti.id = co_righe_documenti.iddocumento GROUP BY idordine +) AS fattura ON fattura.idordine = or_ordini.id +WHERE 1=1 AND `dir` = ''uscita'' |date_period(`data`)| +HAVING 2=2 +ORDER BY `data` DESC, CAST(`numero_esterno` AS UNSIGNED) DESC' WHERE `zz_modules`.`name` = 'Ordini fornitore'; INSERT INTO `zz_api_resources` (`id`, `version`, `type`, `resource`, `class`, `enabled`) VALUES (NULL, 'app-v1', 'retrieve', 'sedi-azienda', 'API\\App\\v1\\SediAzienda', '1'), @@ -83,4 +131,6 @@ INSERT INTO `zz_api_resources` (`id`, `version`, `type`, `resource`, `class`, `e (NULL, 'app-v1', 'retrieve', 'sede-azienda', 'API\\App\\v1\\SediAzienda', '1'), (NULL, 'app-v1', 'retrieve', 'movimenti-manuali', 'API\\App\\v1\\MovimentiManuali', '1'), (NULL, 'app-v1', 'retrieve', 'movimenti-manuali-cleanup', 'API\\App\\v1\\MovimentiManuali', '1'), -(NULL, 'app-v1', 'create', 'movimento-manuale', 'API\\App\\v1\\MovimentiManuali', '1'); +(NULL, 'app-v1', 'create', 'movimento-manuale', 'API\\App\\v1\\MovimentiManuali', '1'), +(NULL, 'app-v1', 'retrieve', 'segnalazione-bug', 'API\\App\\v1\\SegnalazioneBug', '1'), +(NULL, 'app-v1', 'create', 'segnalazione-bug', 'API\\App\\v1\\SegnalazioneBug', '1');