From 2ead8908f987075964b33e9d08f984e46e3ac348 Mon Sep 17 00:00:00 2001 From: Luca Date: Thu, 14 Nov 2019 18:37:42 +0100 Subject: [PATCH] Potenziamento controlli eliminazione contratto --- modules/contratti/actions.php | 25 ++++++++++---- modules/contratti/edit.php | 58 ++++++++++++++++++++++++--------- modules/my_impianti/actions.php | 3 +- 3 files changed, 62 insertions(+), 24 deletions(-) diff --git a/modules/contratti/actions.php b/modules/contratti/actions.php index 3c19633f0..7621f8fb7 100644 --- a/modules/contratti/actions.php +++ b/modules/contratti/actions.php @@ -259,15 +259,26 @@ switch (post('op')) { // eliminazione contratto case 'delete': - try { - $contratto->delete(); - $dbo->query('DELETE FROM co_promemoria WHERE idcontratto='.prepare($id_record)); - $dbo->query('DELETE FROM co_contratti_tipiintervento WHERE idcontratto='.prepare($id_record)); + // Fatture o interventi collegati a questo contratto + $elementi = $dbo->fetchArray('SELECT 0 AS `codice`, `co_documenti`.`id` AS `id`, `co_documenti`.`numero` AS `numero`, `co_documenti`.`numero_esterno` AS `numero_esterno`, `co_documenti`.`data`, `co_tipidocumento`.`descrizione` AS `tipo_documento`, `co_tipidocumento`.`dir` AS `dir` FROM `co_documenti` JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE `co_documenti`.`id` IN (SELECT `iddocumento` FROM `co_righe_documenti` WHERE `idcontratto` = '.prepare($id_record).')'.' + UNION + SELECT `in_interventi`.`codice` AS `codice`, `in_interventi`.`id` AS `id`, 0 AS `numero`, 0 AS `numero_esterno`, `in_interventi`.`data_richiesta` AS `data`, 0 AS `tipo_documento`, 0 AS `dir` FROM `in_interventi` WHERE `in_interventi`.`id_contratto` = '.prepare($id_record).' ORDER BY `data` '); + + if (empty($elementi)) { + + try { + $contratto->delete(); + + $dbo->query('DELETE FROM co_promemoria WHERE idcontratto='.prepare($id_record)); + $dbo->query('DELETE FROM co_contratti_tipiintervento WHERE idcontratto='.prepare($id_record)); + $dbo->query('DELETE FROM my_impianti_contratti WHERE idcontratto='.prepare($id_record)); + + flash()->info(tr('Contratto eliminato!')); + } catch (InvalidArgumentException $e) { + flash()->error(tr('Sono stati utilizzati alcuni serial number nel documento: impossibile procedere!')); + } - flash()->info(tr('Contratto eliminato!')); - } catch (InvalidArgumentException $e) { - flash()->error(tr('Sono stati utilizzati alcuni serial number nel documento: impossibile procedere!')); } break; diff --git a/modules/contratti/edit.php b/modules/contratti/edit.php index 029e9216d..333366065 100644 --- a/modules/contratti/edit.php +++ b/modules/contratti/edit.php @@ -114,13 +114,11 @@ $_SESSION['superselect']['idanagrafica'] = $record['idanagrafica'];
-
- {[ "type": "select", "multiple": "1", "label": "", "name": "matricolaimpianto[]", "values": "query=SELECT idanagrafica, id AS id, IF(nome = '', matricola, CONCAT(matricola, ' - ', nome)) AS descrizione FROM my_impianti WHERE idanagrafica='$idanagrafica$' ORDER BY descrizione", "value": "$idimpianti$" ]} + {[ "type": "select", "multiple": "1", "label": "", "name": "matricolaimpianto[]", "values": "query=SELECT idanagrafica, id AS id, IF(nome = '', matricola, CONCAT(matricola, ' - ', nome)) AS descrizione FROM my_impianti WHERE idanagrafica='$idanagrafica$' ORDER BY descrizione", "value": "$idimpianti$", "icon-after": "add||||" ]}
-
{[ "type": "textarea", "label": "", "name": "esclusioni", "class": "autosize", "value": "$esclusioni$" ]} @@ -388,8 +386,11 @@ include $docroot.'/modules/contratti/row-list.php'; fetchArray('SELECT `co_documenti`.*, `co_tipidocumento`.`descrizione` AS tipo_documento, `co_tipidocumento`.`dir` FROM `co_documenti` JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE `co_documenti`.`id` IN (SELECT `iddocumento` FROM `co_righe_documenti` WHERE `idcontratto` = '.prepare($id_record).') ORDER BY `data`'); +// Fatture o interventi collegati a questo contratto +$elementi = $dbo->fetchArray('SELECT 0 AS `codice`, `co_documenti`.`id` AS `id`, `co_documenti`.`numero` AS `numero`, `co_documenti`.`numero_esterno` AS `numero_esterno`, `co_documenti`.`data`, `co_tipidocumento`.`descrizione` AS `tipo_documento`, `co_tipidocumento`.`dir` AS `dir` FROM `co_documenti` JOIN `co_tipidocumento` ON `co_tipidocumento`.`id` = `co_documenti`.`idtipodocumento` WHERE `co_documenti`.`id` IN (SELECT `iddocumento` FROM `co_righe_documenti` WHERE `idcontratto` = '.prepare($id_record).')'.' +UNION +SELECT `in_interventi`.`codice` AS `codice`, `in_interventi`.`id` AS `id`, 0 AS `numero`, 0 AS `numero_esterno`, `in_interventi`.`data_richiesta` AS `data`, 0 AS `tipo_documento`, 0 AS `dir` FROM `in_interventi` WHERE `in_interventi`.`id_contratto` = '.prepare($id_record).' ORDER BY `data` '); + if (!empty($elementi)) { echo ' @@ -404,19 +405,38 @@ if (!empty($elementi)) {
    '; + + // Elenco attività o contratti collegati + foreach ($elementi as $riga) { + if (!empty($riga['dir'])){ - foreach ($elementi as $fattura) { - $descrizione = tr('_DOC_ num. _NUM_ del _DATE_', [ - '_DOC_' => $fattura['tipo_documento'], - '_NUM_' => !empty($fattura['numero_esterno']) ? $fattura['numero_esterno'] : $fattura['numero'], - '_DATE_' => Translator::dateToLocale($fattura['data']), - ]); + $descrizione = tr('_DOC_ num. _NUM_ del _DATE_', [ + '_DOC_' => $riga['tipo_documento'], + '_NUM_' => !empty($riga['numero_esterno']) ? $riga['numero_esterno'] : $riga['numero'], + '_DATE_' => Translator::dateToLocale($riga['data']), + ]); - $modulo = ($fattura['dir'] == 'entrata') ? 'Fatture di vendita' : 'Fatture di acquisto'; - $id = $fattura['id']; + $modulo = ($riga['dir'] == 'entrata') ? 'Fatture di vendita' : 'Fatture di acquisto'; + $id = $riga['id']; + + echo ' +
  • '.Modules::link($modulo, $id, $descrizione).'
  • '; + + }else{ + + $descrizione = tr('Intervento num. _NUM_ del _DATE_', [ + '_NUM_' => $riga['codice'], + '_DATE_' => Translator::dateToLocale($riga['data']), + ]); + + $modulo = 'Interventi'; + $id = $riga['id']; + + echo ' +
  • '.Modules::link($modulo, $id, $descrizione).'
  • '; + + } - echo ' -
  • '.Modules::link($modulo, $id, $descrizione).'
  • '; } echo ' @@ -430,10 +450,16 @@ if (!empty($elementi)) {
    '.tr('Eliminando questo documento si potrebbero verificare problemi nelle altre sezioni del gestionale').'.
    '; -} + +}else{ ?> + + diff --git a/modules/my_impianti/actions.php b/modules/my_impianti/actions.php index 517f52b10..d6819f216 100644 --- a/modules/my_impianti/actions.php +++ b/modules/my_impianti/actions.php @@ -84,7 +84,8 @@ switch ($op) { $id_record = $dbo->lastInsertedID(); - if (isAjaxRequest() && post('source') != '') { + //&& post('source') != '' + if (isAjaxRequest()) { echo json_encode(['id' => $id_record, 'text' => $matricola.' - '.$nome]); }