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;