Files
2026-08-12 21:29:55 +03:00

191 lines
10 KiB
PHP

<?php
/**
* Create/edit modal for a registry item.
* Expects $formData (mnt_form_data) in scope. Defines mntOpenEquipmentModal(data).
*/
$statuses = $statuses ?? mnt_equipment_statuses();
?>
<div class="modal fade" id="equipmentModal" tabindex="-1" aria-hidden="true">
<div class="modal-dialog modal-lg modal-dialog-centered modal-fullscreen-sm-down">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="equipmentModalTitle">Nuova attrezzatura</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Chiudi"></button>
</div>
<form id="equipmentForm">
<div class="modal-body">
<input type="hidden" name="id" id="eqId" value="">
<div class="row g-3">
<div class="col-12">
<label class="form-label fw-semibold">Nome <span class="text-danger">*</span></label>
<input type="text" class="form-control" name="name" id="eqName" maxlength="100" required>
</div>
<div class="col-12 col-md-6">
<label class="form-label fw-semibold">Categoria <span class="text-danger">*</span></label>
<select class="form-select" name="category_id" id="eqCategory" required>
<option value="">— seleziona —</option>
<?php foreach ($formData['categories'] as $category): ?>
<option value="<?= (int)$category['id'] ?>" data-requires-line="<?= (int)$category['requires_line'] ?>">
<?= mnt_h($category['name']) ?>
</option>
<?php endforeach; ?>
</select>
</div>
<div class="col-12 col-md-6" id="eqLineWrap" style="display:none">
<label class="form-label fw-semibold">Linea di produzione <span class="text-danger">*</span></label>
<select class="form-select" name="line_id" id="eqLine">
<option value="">— seleziona —</option>
<?php foreach ($formData['lines'] as $line): ?>
<option value="<?= (int)$line['id'] ?>">
Linea <?= (int)$line['line_number'] ?> — <?= mnt_h($line['name']) ?>
</option>
<?php endforeach; ?>
</select>
</div>
<div class="col-12 col-md-6">
<label class="form-label fw-semibold">Matricola</label>
<input type="text" class="form-control" name="registration_number" id="eqRegistration" maxlength="100">
</div>
<div class="col-12 col-md-6">
<label class="form-label fw-semibold">Numero di serie</label>
<input type="text" class="form-control" name="serial_number" id="eqSerial" maxlength="100">
</div>
<div class="col-12 col-md-6">
<label class="form-label fw-semibold">Lotto / partita</label>
<input type="text" class="form-control" name="batch_lot" id="eqBatch" maxlength="100">
</div>
<div class="col-12 col-md-6">
<label class="form-label fw-semibold">Costruttore</label>
<input type="text" class="form-control" name="manufacturer" id="eqManufacturer" maxlength="150">
</div>
<div class="col-12 col-md-6">
<label class="form-label fw-semibold">Data di acquisto</label>
<input type="date" class="form-control" name="purchase_date" id="eqPurchase">
</div>
<div class="col-12 col-md-6">
<label class="form-label fw-semibold">Data di messa in servizio</label>
<input type="date" class="form-control" name="commissioning_date" id="eqCommissioning">
</div>
<div class="col-12 col-md-6">
<label class="form-label fw-semibold">Tipo</label>
<input type="text" class="form-control" name="tool_type" id="eqType" maxlength="50">
</div>
<div class="col-12 col-md-6">
<label class="form-label fw-semibold">Stato</label>
<select class="form-select" name="status" id="eqStatus">
<?php foreach ($statuses as $value => $label): ?>
<option value="<?= mnt_h($value) ?>"><?= mnt_h($label) ?></option>
<?php endforeach; ?>
</select>
</div>
<div class="col-12 col-md-6">
<label class="form-label fw-semibold">Reparto</label>
<select class="form-select" name="department_id" id="eqDepartment">
<option value="">—</option>
<?php foreach ($formData['departments'] as $department): ?>
<option value="<?= (int)$department['id'] ?>"><?= mnt_h($department['name']) ?></option>
<?php endforeach; ?>
</select>
</div>
<div class="col-12 col-md-6">
<label class="form-label fw-semibold">Ubicazione</label>
<input type="text" class="form-control" name="location" id="eqLocation" maxlength="255">
</div>
<div class="col-12">
<label class="form-label fw-semibold">Descrizione</label>
<textarea class="form-control" name="description" id="eqDescription" rows="2"></textarea>
</div>
<div class="col-12">
<label class="form-label fw-semibold">Note</label>
<textarea class="form-control" name="notes" id="eqNotes" rows="2"></textarea>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-light" data-bs-dismiss="modal">Annulla</button>
<button type="submit" class="btn btn-mnt-primary">Salva</button>
</div>
</form>
</div>
</div>
</div>
<script>
// Shows the line picker only for categories flagged requires_line
function mntSyncLineVisibility() {
const requiresLine = $('#eqCategory option:selected').data('requires-line') == 1;
$('#eqLineWrap').toggle(requiresLine);
$('#eqLine').prop('required', requiresLine);
if (!requiresLine) { $('#eqLine').val(''); }
}
function mntOpenEquipmentModal(data) {
const isEdit = !!data;
$('#equipmentModalTitle').text(isEdit ? 'Modifica attrezzatura' : 'Nuova attrezzatura');
$('#eqId').val(isEdit ? data.id : '');
$('#eqName').val(isEdit ? (data.name || '') : '');
$('#eqCategory').val(isEdit && data.category_id ? String(data.category_id) : '');
$('#eqLine').val(isEdit && data.line_id ? String(data.line_id) : '');
$('#eqRegistration').val(isEdit ? (data.registration_number || '') : '');
$('#eqSerial').val(isEdit ? (data.serial_number || '') : '');
$('#eqBatch').val(isEdit ? (data.batch_lot || '') : '');
$('#eqManufacturer').val(isEdit ? (data.manufacturer || '') : '');
$('#eqPurchase').val(isEdit ? (data.purchase_date || '') : '');
$('#eqCommissioning').val(isEdit ? (data.commissioning_date || '') : '');
$('#eqType').val(isEdit ? (data.tool_type || '') : '');
$('#eqStatus').val(isEdit ? (data.status || 'active') : 'active');
$('#eqDepartment').val(isEdit && data.department_id ? String(data.department_id) : '');
$('#eqLocation').val(isEdit ? (data.location || '') : '');
$('#eqDescription').val(isEdit ? (data.description || '') : '');
$('#eqNotes').val(isEdit ? (data.notes || '') : '');
mntSyncLineVisibility();
new bootstrap.Modal('#equipmentModal').show();
}
$(function () {
$('#eqCategory').on('change', mntSyncLineVisibility);
$('#equipmentForm').on('submit', function (e) {
e.preventDefault();
const name = $('#eqName').val().trim();
if (!name) { Swal.fire({ icon: 'warning', title: 'Il nome è obbligatorio' }); return; }
if (!$('#eqCategory').val()) { Swal.fire({ icon: 'warning', title: 'Seleziona una categoria' }); return; }
if ($('#eqLineWrap').is(':visible') && !$('#eqLine').val()) {
Swal.fire({ icon: 'warning', title: 'Seleziona la linea di produzione' });
return;
}
$.post('manutenzioni/ajax/save_equipment.php', $(this).serialize())
.done(res => {
if (res.success) {
if (window.mntAfterEquipmentSave) { window.mntAfterEquipmentSave(res); }
else { location.reload(); }
} else {
Swal.fire({ icon: 'error', title: 'Errore', text: res.message });
}
})
.fail(() => Swal.fire({ icon: 'error', title: 'Errore di rete' }));
});
});
</script>