diff --git a/modules/articoli/modutil.php b/modules/articoli/modutil.php index 7266039b5..5bfd990f1 100644 --- a/modules/articoli/modutil.php +++ b/modules/articoli/modutil.php @@ -13,7 +13,7 @@ function add_movimento_magazzino($idarticolo, $qta, $array = [], $descrizone = ' return false; } - // DDT + // Ddt if (!empty($array['idddt'])) { $rs = $dbo->fetchArray('SELECT numero, numero_esterno, dt_tipiddt.descrizione AS tipo, dt_tipiddt.dir FROM dt_ddt LEFT JOIN dt_tipiddt ON dt_tipiddt.id = dt_ddt.idtipoddt WHERE dt_ddt.id='.prepare($array['idddt'])); $numero = (!empty($rs[0]['numero_esterno'])) ? $rs[0]['numero_esterno'] : $rs[0]['numero']; diff --git a/modules/ddt/actions.php b/modules/ddt/actions.php index d8df20dcc..97eb2e3ad 100644 --- a/modules/ddt/actions.php +++ b/modules/ddt/actions.php @@ -42,7 +42,7 @@ switch (post('op')) { $id_record = $dbo->lastInsertedID(); - $_SESSION['infos'][] = tr('Aggiunto DDT in _TYPE_ numero _NUM_!', [ + $_SESSION['infos'][] = tr('Aggiunto ddt in _TYPE_ numero _NUM_!', [ '_TYPE_' => $dir, '_NUM_' => $numero, ]); diff --git a/modules/fatture/add_ddt.php b/modules/fatture/add_ddt.php index 06bffc52e..d6da0a21d 100644 --- a/modules/fatture/add_ddt.php +++ b/modules/fatture/add_ddt.php @@ -19,7 +19,7 @@ $idanagrafica = $record[0]['idanagrafica']; echo '
- {[ "type": "select", "label": "'.tr('DDT').'", "name": "id_ddt", "required": 1, "values": "query=SELECT id, CONCAT(\'nr. \', if(numero_esterno != \'\', numero_esterno, numero), \' del \', DATE_FORMAT(data, \'%d-%m-%Y\')) AS descrizione, numero, numero_esterno, DATE_FORMAT(data, \'%d-%m-%Y\') AS data FROM dt_ddt WHERE idanagrafica='.prepare($idanagrafica).' AND idstatoddt IN (SELECT id FROM dt_statiddt WHERE descrizione=\'Bozza\') AND idtipoddt=(SELECT id FROM dt_tipiddt WHERE dir='.prepare($dir).') ORDER BY data DESC, numero DESC" ]} + {[ "type": "select", "label": "'.tr('Ddt').'", "name": "id_ddt", "required": 1, "values": "query=SELECT id, CONCAT(\'nr. \', if(numero_esterno != \'\', numero_esterno, numero), \' del \', DATE_FORMAT(data, \'%d-%m-%Y\')) AS descrizione, numero, numero_esterno, DATE_FORMAT(data, \'%d-%m-%Y\') AS data FROM dt_ddt WHERE idanagrafica='.prepare($idanagrafica).' AND idstatoddt IN (SELECT id FROM dt_statiddt WHERE descrizione=\'Bozza\') AND idtipoddt=(SELECT id FROM dt_tipiddt WHERE dir='.prepare($dir).') ORDER BY data DESC, numero DESC" ]}
'; diff --git a/modules/fatture/row-list.php b/modules/fatture/row-list.php index 4338bd25c..9527f8ff0 100644 --- a/modules/fatture/row-list.php +++ b/modules/fatture/row-list.php @@ -5,8 +5,7 @@ include_once __DIR__.'/../../core.php'; /* Righe fattura */ -$q = "SELECT *, IFNULL((SELECT codice FROM mg_articoli WHERE id=idarticolo),'') AS codice, (SELECT descrizione FROM co_pianodeiconti3 WHERE co_pianodeiconti3.id=IF(co_righe_documenti.idconto = 0, (SELECT idconto FROM co_documenti WHERE iddocumento=".prepare($id_record).' LIMIT 1), co_righe_documenti.idconto)) AS descrizione_conto FROM `co_righe_documenti` WHERE iddocumento='.prepare($id_record).' ORDER BY `order`'; -$rs = $dbo->fetchArray($q); +$rs = $dbo->fetchArray("SELECT *, IFNULL((SELECT codice FROM mg_articoli WHERE id=idarticolo),'') AS codice, (SELECT descrizione FROM co_pianodeiconti3 WHERE co_pianodeiconti3.id=IF(co_righe_documenti.idconto = 0, (SELECT idconto FROM co_documenti WHERE iddocumento=".prepare($id_record).' LIMIT 1), co_righe_documenti.idconto)) AS descrizione_conto FROM `co_righe_documenti` WHERE iddocumento='.prepare($id_record).' ORDER BY `order`'); echo ' @@ -87,78 +86,63 @@ if (!empty($rs)) { } } - $descrizione = null; $ref_modulo = null; $ref_id = null; // Aggiunta riferimento a ordine if (!empty($r['idordine'])) { - $rso = $dbo->fetchArray('SELECT numero, numero_esterno, data, dir FROM or_ordini JOIN or_tipiordine ON or_tipiordine.id = or_ordini.idtipoordine WHERE or_ordini.id='.prepare($r['idordine'])); + $data = $dbo->fetchArray("SELECT IF(numero_esterno != '', numero_esterno, numero) AS numero, data FROM or_ordini or_ordini.id=".prepare($r['idordine'])); - $ref_modulo = $rso[0]['dir'] == 'entrata' ? 'Ordini cliente' : 'Ordini fornitore'; + $ref_modulo = ($dir == 'entrata') ? 'Ordini cliente' : 'Ordini fornitore'; $ref_id = $r['idordine']; - if (!empty($rso)) { - $numero = !empty($rso[0]['numero_esterno']) ? $rso[0]['numero_esterno'] : $rso[0]['numero']; - - $descrizione = tr('Rif. ordine num. _NUM_ del _DATE_', [ - '_NUM_' => $numero, - '_DATE_' => Translator::dateToLocale($rso[0]['data']), - ]); - } + $documento = tr('Ordine'); } elseif (!empty($r['idddt'])) { - $rso = $dbo->fetchArray('SELECT numero, numero_esterno, data FROM dt_ddt JOIN dt_tipiddt ON dt_tipiddt.id = dt_ddt.idtipoddt WHERE dt_ddt.id='.prepare($r['idddt'])); + $data = $dbo->fetchArray("SELECT IF(numero_esterno != '', numero_esterno, numero) AS numero, data FROM dt_ddt WHERE dt_ddt.id=".prepare($r['idddt'])); - $ref_modulo = $rso[0]['dir'] == 'entrata' ? 'Ddt di vendita' : 'Ddt di acquisto'; + $ref_modulo = ($dir == 'entrata') ? 'Ddt di vendita' : 'Ddt di acquisto'; $ref_id = $r['idddt']; - if (!empty($rso)) { - $numero = !empty($rso[0]['numero_esterno']) ? $rso[0]['numero_esterno'] : $rso[0]['numero']; - - $descrizione = tr('Rif. ddt num. _NUM_ del _DATE_', [ - '_NUM_' => $numero, - '_DATE_' => Translator::dateToLocale($rso[0]['data']), - ]); - } + $documento = tr('Ddt'); } elseif (!empty($r['idpreventivo'])) { - $rso = $dbo->fetchArray('SELECT numero, data_bozza FROM co_preventivi WHERE id='.prepare($r['idpreventivo'])); + $data = $dbo->fetchArray('SELECT numero, data_bozza AS data FROM co_preventivi WHERE id='.prepare($r['idpreventivo'])); $ref_modulo = 'Preventivi'; $ref_id = $r['idpreventivo']; - if (!empty($rso)) { - $descrizione = tr('Rif. preventivo num. _NUM_ del _DATE_', [ - '_NUM_' => $rso[0]['numero'], - '_DATE_' => Translator::dateToLocale($rso[0]['data_bozza']), - ]); - } + $documento = tr('Preventivo'); } elseif (!empty($r['idcontratto'])) { - $rso = $dbo->fetchArray('SELECT numero, data_bozza FROM co_contratti WHERE id='.prepare($r['idcontratto'])); + $data = $dbo->fetchArray('SELECT numero, data_bozza AS data FROM co_contratti WHERE id='.prepare($r['idcontratto'])); - $ref_modulo = 'Preventivi'; + $ref_modulo = 'Contratti'; $ref_id = $r['idcontratto']; - if (!empty($rso)) { - $descrizione = tr('Rif. contratto num. _NUM_ del _DATE_', [ - '_NUM_' => $rso[0]['numero'], - '_DATE_' => Translator::dateToLocale($rso[0]['data_bozza']), - ]); - } + $documento = tr('Contratto'); } elseif (!empty($r['idintervento'])) { - $rso = $dbo->fetchArray('SELECT codice, data_richiesta FROM in_interventi WHERE id='.prepare($r['idintervento'])); + $data = $dbo->fetchArray('SELECT codice AS numero, data_richiesta AS data FROM in_interventi WHERE id='.prepare($r['idintervento'])); $ref_modulo = 'Interventi'; $ref_id = $r['idintervento']; - if (!empty($rso)) { - $descrizione = tr('Rif. intervento num. _NUM_ del _DATE_', [ - '_NUM_' => $rso[0]['codice'], - '_DATE_' => Translator::dateToLocale($rso[0]['data_richiesta']), - ]); - } + $documento = tr('Intervento'); } - if (!empty($descrizione)) { + if (!empty($ref_modulo) && !empty($ref_id)) { + $documento = Stringy\Stringy::create($documento)->toLowerCase(); + + if (!empty($data)) { + $descrizione = tr('Rif. _DOC_ num. _NUM_ del _DATE_', [ + '_DOC_' => $documento, + '_NUM_' => $data[0]['numero'], + '_DATE_' => Translator::dateToLocale($data[0]['data']), + ]); + } else { + $descrizione = tr('_DOC_ di riferimento _ID_ eliminato', [ + '_DOC_' => $documento->upperCaseFirst(), + '_ID_' => $ref_id, + ]); + } + echo '
'.Modules::link($ref_modulo, $ref_id, $descrizione, $descrizione); } diff --git a/modules/viste/actions.php b/modules/viste/actions.php index 02f191576..579de3bfc 100644 --- a/modules/viste/actions.php +++ b/modules/viste/actions.php @@ -4,7 +4,7 @@ include_once __DIR__.'/../../core.php'; function check_query($query) { - $query = strtoupper($query); + $query = mb_strtoupper($query); $blacklist = ['INSERT', 'UPDATE', 'TRUNCATE', 'DELETE', 'DROP', 'GRANT', 'CREATE', 'REVOKE']; foreach ($blacklist as $value) { diff --git a/templates/ddt/init.php b/templates/ddt/init.php index 7a9423ebe..999e26648 100644 --- a/templates/ddt/init.php +++ b/templates/ddt/init.php @@ -15,7 +15,7 @@ $numero = !empty($records[0]['numero_esterno']) ? $records[0]['numero_esterno'] if (empty($records[0]['numero_esterno'])) { $numero = 'pro-forma '.$numero; - $tipo_doc = 'DDT PRO-FORMA'; + $tipo_doc = tr('Ddt pro-forma', [], ['upper' => true]); } // Leggo i dati della destinazione (se 0=sede legale, se!=altra sede da leggere da tabella an_sedi) @@ -42,7 +42,7 @@ if (!empty($records[0]['idsede'])) { // Sostituzioni specifiche $custom = [ - 'tipo_doc' => strtoupper($tipo_doc), + 'tipo_doc' => $tipo_doc, 'numero_doc' => $numero, 'data' => Translator::dateToLocale($records[0]['data']), 'pagamento' => $records[0]['tipo_pagamento'], diff --git a/templates/fatture/init.php b/templates/fatture/init.php index 083a458a9..3f5587bdc 100644 --- a/templates/fatture/init.php +++ b/templates/fatture/init.php @@ -19,7 +19,7 @@ $tipo_doc = $records[0]['tipo_doc']; if ($records[0]['stato_doc'] != 'Bozza') { $numero = !empty($records[0]['numero_esterno']) ? $records[0]['numero_esterno'] : $records[0]['numero']; } else { - $tipo_doc = 'Fattura pro forma'; + $tipo_doc = tr('Fattura pro forma'); $numero = 'PRO-'.$records[0]['numero']; } @@ -47,7 +47,7 @@ if (!empty($records[0]['idsede'])) { // Sostituzioni specifiche $custom = [ - 'tipo_doc' => strtoupper($tipo_doc), + 'tipo_doc' => Stringy\Stringy::create($tipo_doc)->toUpperCase(), 'numero_doc' => $numero, 'data' => Translator::dateToLocale($records[0]['data']), 'pagamento' => $records[0]['tipo_pagamento'], diff --git a/templates/ordini/init.php b/templates/ordini/init.php index 5df2f22e1..125281029 100644 --- a/templates/ordini/init.php +++ b/templates/ordini/init.php @@ -15,7 +15,6 @@ $numero = !empty($records[0]['numero_esterno']) ?$records[0]['numero_esterno'] : // Sostituzioni specifiche $custom = [ - 'tipo_doc' => strtoupper($records[0]['tipo_doc']), 'numero_doc' => $numero, 'data' => Translator::dateToLocale($records[0]['data']), 'pagamento' => $records[0]['tipo_pagamento'], diff --git a/update/2_3.sql b/update/2_3.sql index 7dcdb6ca7..a5f23fcbb 100644 --- a/update/2_3.sql +++ b/update/2_3.sql @@ -57,7 +57,7 @@ UPDATE `my_componenti_interventi` SET `id_intervento` = NULL WHERE `id_intervent ALTER TABLE `co_ordiniservizio` CHANGE `idintervento` `idintervento` int(11), ADD FOREIGN KEY (`idintervento`) REFERENCES `in_interventi`(`id`) ON DELETE CASCADE; ALTER TABLE `co_preventivi_interventi` CHANGE `idintervento` `idintervento` int(11), ADD FOREIGN KEY (`idintervento`) REFERENCES `in_interventi`(`id`) ON DELETE CASCADE; ALTER TABLE `co_righe_contratti` CHANGE `idintervento` `idintervento` int(11), ADD FOREIGN KEY (`idintervento`) REFERENCES `in_interventi`(`id`) ON DELETE CASCADE; -ALTER TABLE `co_righe_documenti` CHANGE `idintervento` `idintervento` int(11), ADD FOREIGN KEY (`idintervento`) REFERENCES `in_interventi`(`id`) ON DELETE CASCADE; +ALTER TABLE `co_righe_documenti` CHANGE `idintervento` `idintervento` int(11); ALTER TABLE `in_righe_interventi` CHANGE `idintervento` `idintervento` int(11), ADD FOREIGN KEY (`idintervento`) REFERENCES `in_interventi`(`id`) ON DELETE CASCADE; ALTER TABLE `mg_movimenti` CHANGE `idintervento` `idintervento` int(11), ADD FOREIGN KEY (`idintervento`) REFERENCES `in_interventi`(`id`) ON DELETE CASCADE; ALTER TABLE `mg_articoli_interventi` CHANGE `idintervento` `idintervento` int(11), ADD FOREIGN KEY (`idintervento`) REFERENCES `in_interventi`(`id`) ON DELETE CASCADE; @@ -82,13 +82,13 @@ DROP TABLE `dt_automezzi_tagliandi`; DROP TABLE `co_contratti_interventi`; -- RELEASE 2.2.1 [NON UFFICIALE] -- --- Aggiunta del campo desc_iva anche per Preventivi, DDT e Ordini +-- Aggiunta del campo desc_iva anche per Preventivi, Ddt e Ordini ALTER TABLE `dt_righe_ddt` ADD `desc_iva` varchar(255) NOT NULL AFTER `idiva`; ALTER TABLE `co_righe_preventivi` ADD `desc_iva` varchar(255) NOT NULL AFTER `idiva`; ALTER TABLE `or_righe_ordini` ADD `desc_iva` varchar(255) NOT NULL AFTER `idiva`; ALTER TABLE `co_righe2_contratti` ADD `desc_iva` varchar(255) NOT NULL AFTER `idiva`; --- Fix per l'ordinamento delle righe in Preventivi, DDT e Ordini +-- Fix per l'ordinamento delle righe in Preventivi, Ddt e Ordini ALTER TABLE `co_righe_preventivi` ADD `order` tinyint(11) NOT NULL AFTER `qta`; ALTER TABLE `dt_righe_ddt` ADD `order` tinyint(11) NOT NULL AFTER `qta_evasa`; ALTER TABLE `or_righe_ordini` ADD `order` tinyint(11) NOT NULL AFTER `qta_evasa`; @@ -882,9 +882,6 @@ ALTER TABLE `dt_automezzi_tecnici` CHANGE `data_inizio` `data_inizio` date, CHAN ALTER TABLE `my_impianto_componenti` CHANGE `data` `data` date, CHANGE `data_sostituzione` `data_sostituzione` date; ALTER TABLE `or_righe_ordini` CHANGE `data_evasione` `data_evasione` date; --- ALTER TABLE `my_componenti_interventi` ADD PRIMARY KEY (`id_intervento`, `id_componente`); --- ALTER TABLE `my_impianti_interventi` ADD PRIMARY KEY (`idintervento`, `idimpianto`); - -- Fix di alcuni problemi con le query dei widget UPDATE `zz_widgets` SET `query` = 'SELECT CONCAT_WS(" ", REPLACE(REPLACE(REPLACE(FORMAT(SUM(qta),2), ",", "#"), ".", ","), "#", "."), "unità") AS dato FROM mg_articoli WHERE qta>0' WHERE `name` = 'Articoli in magazzino'; UPDATE `zz_widgets` SET `query` = 'SELECT CONCAT_WS(" ", REPLACE(REPLACE(REPLACE(FORMAT(SUM(prezzo_acquisto*qta),2), ",", "#"), ".", ","), "#", "."), "€") AS dato FROM mg_articoli WHERE qta>0' WHERE `name` = 'Valore magazzino'; @@ -893,7 +890,7 @@ UPDATE `zz_widgets` SET `query` = 'SELECT CONCAT_WS(" ", REPLACE(REPLACE(REPLACE UPDATE `in_interventi_tecnici` SET `idtipointervento` = (SELECT `idtipointervento` FROM `in_interventi` WHERE `idintervento` = `in_interventi`.`id`) WHERE `idtipointervento` = ''; -- Fix per i serial number -ALTER TABLE `mg_prodotti` ADD `id_riga_documento` int(11), ADD FOREIGN KEY (`id_riga_documento`) REFERENCES `co_righe_documenti`(`id`) ON DELETE CASCADE, ADD `id_riga_ordine` int(11), ADD FOREIGN KEY (`id_riga_ordine`) REFERENCES `or_righe_ordini`(`id`) ON DELETE CASCADE, ADD `id_riga_ddt` int(11), ADD FOREIGN KEY (`id_riga_ddt`) REFERENCES `dt_righe_ddt`(`id`) ON DELETE CASCADE, ADD `id_riga_intervento` int(11), ADD FOREIGN KEY (`id_riga_intervento`) REFERENCES `mg_articoli_interventi`(`id`) ON DELETE CASCADE, ADD `dir` enum('entrata', 'uscita') DEFAULT 'uscita', CHANGE `idarticolo` `id_articolo` int(11), ADD FOREIGN KEY (`id_articolo`) REFERENCES `mg_articoli`(`id`) ON DELETE CASCADE, CHANGE `serial` `serial` varchar(50), CHANGE `lotto` `lotto` varchar(50), CHANGE `altro` `altro` varchar(50); +ALTER TABLE `mg_prodotti` ADD `id_riga_documento` int(11), ADD FOREIGN KEY (`id_riga_documento`) REFERENCES `co_righe_documenti`(`id`) ON DELETE CASCADE, ADD `id_riga_ordine` int(11), ADD FOREIGN KEY (`id_riga_ordine`) REFERENCES `or_righe_ordini`(`id`) ON DELETE CASCADE, ADD `id_riga_ddt` int(11), ADD FOREIGN KEY (`id_riga_ddt`) REFERENCES `dt_righe_ddt`(`id`) ON DELETE CASCADE, ADD `id_riga_intervento` int(11), ADD FOREIGN KEY (`id_riga_intervento`) REFERENCES `mg_articoli_interventi`(`id`) ON DELETE CASCADE, ADD `dir` enum('entrata', 'uscita') DEFAULT 'uscita', CHANGE `idarticolo` `id_articolo` int(11), ADD FOREIGN KEY (`id_articolo`) REFERENCES `mg_articoli`(`id`) ON DELETE SET NULL, CHANGE `serial` `serial` varchar(50), CHANGE `lotto` `lotto` varchar(50), CHANGE `altro` `altro` varchar(50); INSERT INTO `mg_prodotti` (`id_riga_documento`, `dir`, `id_articolo`, `serial`, `lotto`, `altro`) SELECT `id`, (SELECT `dir` FROM `co_tipidocumento` JOIN `co_documenti` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE `co_documenti`.`id` = `co_righe_documenti`.`iddocumento`), IF(`idarticolo` IN (SELECT `id` FROM `mg_articoli`), `idarticolo`, NULL), `serial`, `lotto`, `altro` FROM `co_righe_documenti`; @@ -945,3 +942,7 @@ UPDATE `zz_modules` SET `title` = `name` WHERE `title` = ''; -- Aggiunta del campo per introdurre l'help nei widget ALTER TABLE `zz_widgets` ADD `help` VARCHAR(255) NULL; + +-- ALTER TABLE `my_componenti_interventi` ADD PRIMARY KEY (`id_intervento`, `id_componente`); +-- ALTER TABLE `my_impianti_interventi` ADD PRIMARY KEY (`idintervento`, `idimpianto`); +-- ALTER TABLE `co_righe_documenti`ADD FOREIGN KEY (`idintervento`) REFERENCES `in_interventi`(`id`) ON DELETE CASCADE;