Miglioramento della gestione delle referenze eliminate

This commit is contained in:
Thomas Zilio 2017-09-15 15:03:27 +02:00
parent fa1dcef03c
commit 20b9869d64
9 changed files with 46 additions and 62 deletions

View File

@ -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'];

View File

@ -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,
]);

View File

@ -19,7 +19,7 @@ $idanagrafica = $record[0]['idanagrafica'];
echo '
<div class="row">
<div class="col-md-6">
{[ "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" ]}
</div>
</div>';

View File

@ -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 '
<table class="table table-striped table-hover table-condensed table-bordered">
@ -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 '
<br>'.Modules::link($ref_modulo, $ref_id, $descrizione, $descrizione);
}

View File

@ -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) {

View File

@ -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'],

View File

@ -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'],

View File

@ -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'],

View File

@ -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&agrave;") 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), ",", "#"), ".", ","), "#", "."), "&euro;") 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;