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