Skip to content

Commit f9dd578

Browse files
feat: tipo anagrafica in tipologie interventi
1 parent 8dd879d commit f9dd578

5 files changed

Lines changed: 73 additions & 8 deletions

File tree

modules/interventi/ajax/select.php

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,11 @@
2222

2323
switch ($resource) {
2424
case 'tipiintervento':
25-
$query = 'SELECT `in_tipiintervento`.`id`, CASE WHEN ISNULL(`tempo_standard`) OR `tempo_standard` <= 0 THEN CONCAT(`codice`, \' - \', `title`, IF(`in_tipiintervento`.`deleted_at` IS NULL, "", " ('.tr('eliminato').')")) WHEN `tempo_standard` > 0 THEN CONCAT(`codice`, \' - \', `title`, \' (\', REPLACE(FORMAT(`tempo_standard`, 2), \'.\', \',\'), \' ore)\', IF(`in_tipiintervento`.`deleted_at` IS NULL, "", " ('.tr('eliminato').')")) END AS descrizione, `tempo_standard` FROM `in_tipiintervento` LEFT JOIN `in_tipiintervento_lang` ON (`in_tipiintervento`.`id` = `in_tipiintervento_lang`.`id_record` AND `in_tipiintervento_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).') |where| ORDER BY `title`';
25+
$query = 'SELECT `in_tipiintervento`.`id`, CASE WHEN ISNULL(`tempo_standard`) OR `tempo_standard` <= 0 THEN CONCAT(`codice`, \' - \', `title`, IF(`in_tipiintervento`.`deleted_at` IS NULL, "", " ('.tr('eliminato').')")) WHEN `tempo_standard` > 0 THEN CONCAT(`codice`, \' - \', `title`, \' (\', REPLACE(FORMAT(`tempo_standard`, 2), \'.\', \',\'), \' ore)\', IF(`in_tipiintervento`.`deleted_at` IS NULL, "", " ('.tr('eliminato').')")) END AS descrizione, `tempo_standard`
26+
FROM `in_tipiintervento`
27+
LEFT JOIN `in_tipiintervento_lang` ON (`in_tipiintervento`.`id` = `in_tipiintervento_lang`.`id_record` AND `in_tipiintervento_lang`.`id_lang` = '.prepare(Models\Locale::getDefault()->id).')
28+
|where|
29+
ORDER BY `title`';
2630

2731
foreach ($elements as $element) {
2832
$filter[] = '`in_tipiintervento`.`id`='.prepare($element);
@@ -36,5 +40,44 @@
3640
$search_fields[] = '`title` LIKE '.prepare('%'.$search.'%');
3741
}
3842

43+
$data = AJAX::selectResults($query, $where, $filter, $search_fields, $limit, $custom);
44+
$rs = $data['results'];
45+
46+
foreach ($rs as $k => $r) {
47+
$disabled = false;
48+
49+
// Controllo se il tipo intervento è compatibile con la tipologia dell'anagrafica
50+
if (!empty($superselect['idanagrafica'])) {
51+
// Ottengo la tipologia dell'anagrafica selezionata
52+
$anagrafica_tipo = $dbo->fetchOne('SELECT `tipo`
53+
FROM `an_anagrafiche`
54+
WHERE `idanagrafica` = '.prepare($superselect['idanagrafica']));
55+
56+
// Ottengo le tipologie associate al tipo intervento
57+
$tipologie_tipo_intervento = $dbo->fetchArray('SELECT `tipo`
58+
FROM `in_tipiintervento_tipologie`
59+
WHERE `idtipointervento` = '.prepare($r['id']));
60+
61+
$tipologie_tipo_intervento = array_column($tipologie_tipo_intervento, 'tipo');
62+
if (!empty($tipologie_tipo_intervento)) {
63+
// Controllo se la tipologia dell'anagrafica è presente nelle tipologie del tipo intervento
64+
$compatibile = in_array($anagrafica_tipo['tipo'], $tipologie_tipo_intervento);
65+
if (!$compatibile) {
66+
$disabled = true;
67+
}
68+
}
69+
}
70+
71+
$rs[$k] = array_merge($r, [
72+
'text' => $r['descrizione'],
73+
'disabled' => $disabled,
74+
]);
75+
}
76+
77+
$results = [
78+
'results' => $rs,
79+
'recordsFiltered' => $data['recordsFiltered'],
80+
];
81+
3982
break;
4083
}

modules/interventi/edit.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@
168168
{[ "type": "timestamp", "label": "<?php echo tr('Data/ora scadenza'); ?>", "name": "data_scadenza", "required": 0, "value": "$data_scadenza$", "readonly": "<?php echo $record['flag_completato']; ?>" ]}
169169
</div>
170170
<div class="col-md-3">
171-
{[ "type": "select", "label": "<?php echo tr('Tipo attività'); ?>", "name": "idtipointervento", "required": 1, "ajax-source": "tipiintervento", "value": "$idtipointervento$", "readonly": "<?php echo $record['flag_completato']; ?>" ]}
171+
{[ "type": "select", "label": "<?php echo tr('Tipo attività'); ?>", "name": "idtipointervento", "required": 1, "ajax-source": "tipiintervento", "value": "$idtipointervento$", "readonly": "<?php echo $record['flag_completato']; ?>", "select-options": <?php echo json_encode(['idanagrafica' => $record['idanagrafica']]); ?> ]}
172172
</div>
173173
<div class="col-md-3">
174174
<?php

modules/tipi_intervento/actions.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,17 @@
6060
]);
6161
}
6262

63+
$dbo->delete('in_tipiintervento_tipologie', [
64+
'idtipointervento' => $id_record
65+
]);
66+
$tipi = (array) post('tipi');
67+
foreach ($tipi as $tipo) {
68+
$dbo->insert('in_tipiintervento_tipologie', [
69+
'idtipointervento' => $id_record,
70+
'tipo' => $tipo
71+
]);
72+
}
73+
6374
flash()->info(tr('Informazioni tipo intervento salvate correttamente!'));
6475

6576
break;

modules/tipi_intervento/edit.php

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,31 +19,40 @@
1919

2020
include_once __DIR__.'/../../core.php';
2121

22+
$id_tipi = $dbo->select('in_tipiintervento_tipologie', '*', [], ['idtipointervento' => $id_record]);
23+
$id_tipi = implode(',' ,array_column($id_tipi, 'tipo'));
24+
2225
?><form action="" method="post">
2326
<input type="hidden" name="op" value="update">
2427
<input type="hidden" name="backto" value="record-edit">
2528
<input type="hidden" name="id_record" value="<?php echo $id_record; ?>">
2629

2730
<div class="row">
28-
<div class="col-md-2">
31+
<div class="col-md-3">
2932
{[ "type": "span", "label": "<?php echo tr('Codice'); ?>", "name": "codice", "value": "$codice$" ]}
3033
</div>
3134

32-
<div class="col-md-4">
35+
<div class="col-md-3">
3336
{[ "type": "text", "label": "<?php echo tr('Descrizione'); ?>", "name": "descrizione", "required": 1, "value": "$title$" ]}
3437
</div>
3538

36-
<div class="col-md-2">
39+
<div class="col-md-3">
3740
{[ "type": "checkbox", "label": "<?php echo tr('Non conteggiare'); ?>", "name": "non_conteggiare", "help": "<?php echo tr('Specifica se scalare dal consuntivo collegato'); ?>.", "value": "$non_conteggiare$" ]}
3841
</div>
3942

40-
<div class="col-md-2">
43+
<div class="col-md-3">
4144
{[ "type": "checkbox", "label": "<?php echo tr('Calcola km'); ?>", "name": "calcola_km", "help": "<?php echo tr('Specifica se inserire automaticamente i km percorsi tra sede azienda e sede cliente'); ?>.", "value": "$calcola_km$" ]}
4245
</div>
46+
</div>
4347

44-
<div class="col-md-2">
48+
<div class="row">
49+
<div class="col-md-3">
4550
{[ "type": "number", "label": "<?php echo tr('Tempo standard'); ?>", "name": "tempo_standard", "help": "<?php echo tr('Valore compreso tra 0,25 - 24 ore. <br><small>Esempi: <em><ul><li>60 minuti = 1 ora</li><li>30 minuti = 0,5 ore</li><li>15 minuti = 0,25 ore</li></ul></em></small> Suggerisce il tempo solitamente impiegato per questa tipologia di attivita'); ?>.", "min-value": "0", "max-value": "24", "class": "text-center", "value": "$tempo_standard$", "icon-after": "ore" ]}
4651
</div>
52+
53+
<div class="col-md-3">
54+
{[ "type": "select", "label": "<?php echo tr('Tipi anagrafiche'); ?>", "multiple": "1", "name": "tipi[]", "values": "list=\"Azienda\": \"<?php echo tr('Azienda'); ?>\", \"Ente pubblico\": \"<?php echo tr('Ente pubblico'); ?>\", \"Privato\":\"<?php echo tr('Privato'); ?>\"", "value": "<?php echo $id_tipi; ?>", "help": "<?php echo tr('Seleziona le tipologie di anagrafica a cui questo tipo di attività si applica, se non viene selezionata alcuna tipologia, il tipo di attività si applica a tutte le anagrafiche'); ?>." ]}
55+
</div>
4756
</div>
4857

4958
<div class="row">

update/2_10.sql

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,6 @@ INSERT INTO `zz_views_lang` (`id_lang`, `id_record`, `title`) VALUES
6161
(1, (SELECT MAX(`id`)-3 FROM `zz_views`), 'Livello'),
6262
(1, (SELECT MAX(`id`)-2 FROM `zz_views`), 'Messaggio'),
6363
(1, (SELECT MAX(`id`)-1 FROM `zz_views`), 'Context'),
64-
(1, (SELECT MAX(`id`) FROM `zz_views`), '_bg_');
64+
(1, (SELECT MAX(`id`) FROM `zz_views`), '_bg_');
65+
66+
CREATE TABLE `in_tipiintervento_tipologie` (`id` INT NOT NULL AUTO_INCREMENT , `idtipointervento` INT NOT NULL , `tipo` VARCHAR(255) NOT NULL , PRIMARY KEY (`id`));

0 commit comments

Comments
 (0)