Skip to content

Commit a297862

Browse files
committed
feat: selezione seriale in plugin componenti in impianti
1 parent eb771ee commit a297862

5 files changed

Lines changed: 93 additions & 13 deletions

File tree

plugins/componenti/actions.php

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,29 @@
2828
$operazione = filter('op');
2929

3030
switch ($operazione) {
31+
case 'check_serial':
32+
$id_articolo = filter('id_articolo');
33+
$articolo = Articolo::find($id_articolo);
34+
35+
echo json_encode([
36+
'abilita_serial' => $articolo ? $articolo->abilita_serial : false,
37+
]);
38+
39+
break;
40+
3141
case 'add':
3242
$impianto = Impianto::find($id_record);
3343

3444
$id_articolo = filter('id_articolo');
3545
$articolo = Articolo::find($id_articolo);
46+
$serial = filter('serial');
47+
48+
$componente = Componente::build($impianto, $articolo, new Carbon);
3649

37-
$componente = Componente::build($impianto, $articolo, new Carbon());
50+
if ($serial) {
51+
$componente->serial = $serial;
52+
$componente->save();
53+
}
3854

3955
flash()->info(tr('Salvataggio completato!'));
4056

@@ -48,6 +64,7 @@
4864
$componente->data_installazione = filter('data_installazione') ?: null;
4965
$componente->data_rimozione = filter('data_rimozione') ?: null;
5066
$componente->note = filter('note') ?: null;
67+
$componente->serial = filter('serial') ?: null;
5168

5269
$componente->save();
5370

@@ -60,16 +77,17 @@
6077

6178
// Creazione copia del componenten
6279
$copia = $componente->replicate();
63-
$copia->data_registrazione = new Carbon();
64-
$copia->data_installazione = new Carbon();
80+
$copia->data_registrazione = new Carbon;
81+
$copia->data_installazione = new Carbon;
82+
$componente->serial = null;
6583
$copia->data_sostituzione = null;
6684
$copia->data_rimozione = null;
6785
// Rimozione riferimento intervento di installazione
6886
$copia->id_intervento = null;
6987
$copia->save();
7088

7189
// Sostituzione del componente indicato
72-
$componente->data_sostituzione = new Carbon();
90+
$componente->data_sostituzione = new Carbon;
7391
$componente->id_sostituzione = $copia->id;
7492
$componente->save();
7593

@@ -81,7 +99,7 @@
8199
$id_componente = filter('id_componente');
82100
$componente = Componente::find($id_componente);
83101

84-
$componente->data_rimozione = new Carbon();
102+
$componente->data_rimozione = new Carbon;
85103
$componente->save();
86104

87105
flash()->info(tr('Componente rimosso!'));

plugins/componenti/add.php

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,20 @@
2121
include_once __DIR__.'/../../core.php';
2222

2323
echo '
24-
<form action="" method="post" role="form">
24+
<form action="" method="post" role="form" id="add_componente_form">
2525
<input type="hidden" name="id_parent" value="'.$id_parent.'">
2626
<input type="hidden" name="backto" value="record-edit">
2727
<input type="hidden" name="op" value="add">
2828
2929
<div class="row">
3030
<div class="col-md-12">
31-
{["type": "select", "label": "'.tr('Articolo').'", "name": "id_articolo", "ajax-source": "articoli", "value": "", "required": 1, "select-options": {"permetti_movimento_a_zero": 1, "ricerca_codici_fornitore": 1} ]}
31+
{["type": "select", "label": "'.tr('Articolo').'", "name": "id_articolo", "id": "id_articolo_componente", "ajax-source": "articoli", "value": "", "required": 1, "select-options": {"permetti_movimento_a_zero": 1, "ricerca_codici_fornitore": 1} ]}
32+
</div>
33+
</div>
34+
35+
<div class="row" id="row_serial" style="display: none;">
36+
<div class="col-md-12">
37+
{["type": "select", "label": "'.tr('Serial').'", "name": "serial", "id": "serial_componente", "ajax-source": "serial-articolo", "value": "" ]}
3238
</div>
3339
</div>
3440
@@ -40,4 +46,38 @@
4046
</button>
4147
</div>
4248
</div>
43-
</form>';
49+
</form>
50+
51+
<script>
52+
$("#id_articolo_componente").on("change", function() {
53+
var id_articolo = $(this).val();
54+
55+
if (id_articolo) {
56+
$.ajax({
57+
url: globals.rootdir + "/actions.php",
58+
type: "POST",
59+
dataType: "json",
60+
data: {
61+
id_module: "'.$id_module.'",
62+
id_record: "'.$id_record.'",
63+
id_plugin: "'.$id_plugin.'",
64+
op: "check_serial",
65+
id_articolo: id_articolo
66+
},
67+
success: function(response) {
68+
if (response.abilita_serial) {
69+
$("#row_serial").show();
70+
$("#serial_componente").enableSelect2();
71+
$("#serial_componente").select2("data", {idarticolo: id_articolo});
72+
} else {
73+
$("#row_serial").hide();
74+
$("#serial_componente").val("").change();
75+
}
76+
}
77+
});
78+
} else {
79+
$("#row_serial").hide();
80+
$("#serial_componente").val("").change();
81+
}
82+
});
83+
</script>';

plugins/componenti/edit.php

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,10 +114,19 @@
114114
$data = dateFormat($componente[$date]);
115115
$icona_allegati = $numero_allegati == 0 ? 'fa fa-times text-danger' : 'fa fa-check text-success';
116116

117+
$serial_badge = '';
118+
if (! empty($articolo->abilita_serial)) {
119+
if (! empty($componente->serial)) {
120+
$serial_badge = ' <span class="badge badge-primary">'.tr('Seriale').': '.$componente->serial.'</span>';
121+
} else {
122+
$serial_badge = ' <span class="badge badge-warning">'.tr('Seriale non selezionato').'</span>';
123+
}
124+
}
125+
117126
echo '
118127
<tr class="riga-componente" data-id="'.$componente->id.'">
119128
<td class="text-center">#'.$componente->id.'</td>
120-
<td class="text-center">'.$articolo->codice.' - '.$articolo->getTranslation('title').'</td>
129+
<td class="text-center">'.$articolo->codice.' - '.$articolo->getTranslation('title').$serial_badge.'</td>
121130
<td class="text-center">'.$data.'</td>
122131
<td class="text-center">'.dateFormat($componente->data_registrazione).'</td>
123132
<td class="text-center">
@@ -153,15 +162,21 @@
153162
{[ "type": "select", "label": "'.tr('Articolo').'", "name": "id_articolo", "id": "id_articolo_'.$componente->id.'", "disabled": "1", "value": "'.$componente->id_articolo.'", "ajax-source": "articoli", "select-options": {"permetti_movimento_a_zero": 1} ]}
154163
</div>
155164
156-
<div class="col-md-2">
165+
<div class="col-md-6">
166+
{[ "type": "select", "label": "'.tr('Serial').'", "name": "serial", "id": "serial_'.$componente->id.'", "value": "'.$componente->serial.'", "ajax-source": "serial-articolo", "select-options": '.json_encode(['idarticolo' => $componente->id_articolo]).' ]}
167+
</div>
168+
</div>
169+
170+
<div class="row">
171+
<div class="col-md-4">
157172
{[ "type": "date", "label": "'.tr('Data installazione').'", "name": "data_installazione", "id": "data_installazione_'.$componente->id.'", "value": "'.$componente['data_installazione'].'" ]}
158173
</div>
159174
160-
<div class="col-md-2">
175+
<div class="col-md-4">
161176
{[ "type": "date", "label": "'.tr('Data registrazione').'", "name": "data_registrazione", "id": "data_registrazione_'.$componente->id.'", "value": "'.$componente['data_registrazione'].'" ]}
162177
</div>
163178
164-
<div class="col-md-2">
179+
<div class="col-md-4">
165180
{[ "type": "date", "label": "'.tr('Data rimozione').'", "name": "data_rimozione", "id": "data_rimozione_'.$componente->id.'", "value": "'.$componente['data_rimozione'].'" ]}
166181
</div>
167182
</div>

plugins/componenti/src/Componente.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,18 @@ class Componente extends Model
4444
'data_rimozione' => 'date',
4545
];
4646

47+
protected $fillable = [
48+
'serial',
49+
];
50+
4751
/**
4852
* Crea un nuovo Componente per Impianti.
4953
*
5054
* @return self
5155
*/
5256
public static function build(?Impianto $impianto = null, ?Articolo $articolo = null, $data_registrazione = null)
5357
{
54-
$model = new static();
58+
$model = new static;
5559

5660
$model->impianto()->associate($impianto);
5761
$model->articolo()->associate($articolo);

update/2_11.sql

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,3 +321,6 @@ INSERT INTO `zz_views` (`id_module`, `name`, `query`, `order`, `visible`) VALUES
321321
INSERT INTO `zz_views_lang` (`id_lang`, `id_record`, `title`) VALUES
322322
(1, (SELECT MAX(`id`) FROM `zz_views`), 'Data insoluto'),
323323
(2, (SELECT MAX(`id`) FROM `zz_views`), 'Unpaid date');
324+
325+
-- Aggiunta del campo serial alla tabella my_componenti per la gestione dei seriali nei componenti degli impianti
326+
ALTER TABLE `my_componenti` ADD `serial` VARCHAR(255) NULL AFTER `id_articolo`;

0 commit comments

Comments
 (0)