fixed products
This commit is contained in:
+235
-205
@@ -663,221 +663,251 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Modale per aggiungere un prodotto -->
|
||||
<div class="modal-body">
|
||||
<input type="hidden" name="action" value="add_product">
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_product_name" class="form-label">Nome Prodotto</label>
|
||||
<input type="text" class="form-control" id="add_product_name" name="name" required>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_product_variation_name" class="form-label">Nome Variazione</label>
|
||||
<input type="text" class="form-control" id="add_product_variation_name" name="variation_name" required placeholder="Es. 5 Ingressi">
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_product_type" class="form-label">Tipo</label>
|
||||
<select class="form-control" id="add_product_type" name="type" required>
|
||||
<option value="carnet">Carnet</option>
|
||||
<option value="subscription">Abbonamento</option>
|
||||
<option value="drop_in">Lezione Singola</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_product_price" class="form-label">Prezzo (€)</label>
|
||||
<input type="number" step="0.01" class="form-control" id="add_product_price" name="price" required>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_product_duration_days" class="form-label">Durata (giorni)</label>
|
||||
<input type="number" class="form-control" id="add_product_duration_days" name="duration_days">
|
||||
<small class="form-text text-muted">Lascia vuoto per lezioni singole.</small>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_product_max_entries" class="form-label">Numero Massimo di Ingressi</label>
|
||||
<input type="number" class="form-control" id="add_product_max_entries" name="max_entries">
|
||||
<small class="form-text text-muted">Lascia vuoto per abbonamenti illimitati.</small>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_product_weekly_limit" class="form-label">Limite Settimanale</label>
|
||||
<input type="number" class="form-control" id="add_product_weekly_limit" name="weekly_limit">
|
||||
<small class="form-text text-muted">Lascia vuoto se non applicabile.</small>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_product_max_recoveries" class="form-label">Numero Massimo di Recuperi</label>
|
||||
<input type="number" class="form-control" id="add_product_max_recoveries" name="max_recoveries">
|
||||
<small class="form-text text-muted">Lascia vuoto se non applicabile.</small>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_product_recovery_validity_days" class="form-label">Validità Recuperi (giorni)</label>
|
||||
<input type="number" class="form-control" id="add_product_recovery_validity_days" name="recovery_validity_days">
|
||||
<small class="form-text text-muted">Lascia vuoto se non applicabile.</small>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_product_max_inventory" class="form-label">Inventario Massimo</label>
|
||||
<input type="number" class="form-control" id="add_product_max_inventory" name="max_inventory">
|
||||
<small class="form-text text-muted">Lascia vuoto per illimitato.</small>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_product_allow_freeze" class="form-label">Permetti Congelamento</label>
|
||||
<select class="form-control" id="add_product_allow_freeze" name="allow_freeze">
|
||||
<option value="0">No</option>
|
||||
<option value="1">Sì</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_product_freeze_max_days" class="form-label">Giorni Massimi di Congelamento</label>
|
||||
<input type="number" class="form-control" id="add_product_freeze_max_days" name="freeze_max_days">
|
||||
<small class="form-text text-muted">Lascia vuoto se non applicabile.</small>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_product_is_full_access" class="form-label">Accesso Completo</label>
|
||||
<select class="form-control" id="add_product_is_full_access" name="is_full_access">
|
||||
<option value="0">No</option>
|
||||
<option value="1">Sì</option>
|
||||
</select>
|
||||
<small class="form-text text-muted">Se sì, il prodotto dà accesso a tutte le classi.</small>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_product_auto_propagate" class="form-label">Propaga in Automatico all'Ordine</label>
|
||||
<select class="form-control" id="add_product_auto_propagate" name="auto_propagate_to_order">
|
||||
<option value="0">No</option>
|
||||
<option value="1">Sì</option>
|
||||
</select>
|
||||
<small class="form-text text-muted">Se sì, il prodotto verrà aggiunto automaticamente agli ordini futuri.</small>
|
||||
</div>
|
||||
<div class="col-md-12 mb-3" id="add_class_types_section">
|
||||
<label class="form-label">Classi e Variazioni Associate</label>
|
||||
<?php foreach ($all_classes as $class_id => $class): ?>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input class-checkbox" type="checkbox" id="add_class_<?php echo $class_id; ?>" data-class-id="<?php echo $class_id; ?>">
|
||||
<label class="form-check-label" for="add_class_<?php echo $class_id; ?>">
|
||||
<?php echo htmlspecialchars($class['name']); ?>
|
||||
</label>
|
||||
<?php if (!empty($class['variations'])): ?>
|
||||
<div class="ms-4">
|
||||
<?php foreach ($class['variations'] as $variation): ?>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input variation-checkbox" type="checkbox" name="class_types[]" value="<?php echo $variation['id']; ?>" id="add_variation_<?php echo $variation['id']; ?>" data-class-id="<?php echo $class_id; ?>">
|
||||
<label class="form-check-label" for="add_variation_<?php echo $variation['id']; ?>">
|
||||
<?php echo htmlspecialchars($variation['name']); ?>
|
||||
</label>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
<!-- ================================================================== -->
|
||||
<!-- MODALE AGGIUNGI PRODOTTO (era mancante!) -->
|
||||
<!-- ================================================================== -->
|
||||
<div class="modal fade" id="addProductModal" tabindex="-1" aria-labelledby="addProductModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered" style="max-width: 90vw; height: 90vh;">
|
||||
<div class="modal-content d-flex flex-column" style="height: 100%;">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="addProductModalLabel">Aggiungi Nuovo Prodotto</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
<form action="" method="POST">
|
||||
<div class="modal-body">
|
||||
<input type="hidden" name="action" value="add_product">
|
||||
|
||||
<div class="row g-3">
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">Nome Prodotto <span class="text-danger">*</span></label>
|
||||
<input type="text" class="form-control" name="name" required>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">Nome Variazione <span class="text-danger">*</span></label>
|
||||
<input type="text" class="form-control" name="variation_name" required placeholder="es. 10 ingressi">
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">Tipo <span class="text-danger">*</span></label>
|
||||
<select class="form-select" name="type" required>
|
||||
<option value="carnet">Carnet</option>
|
||||
<option value="subscription">Abbonamento</option>
|
||||
<option value="drop_in">Lezione Singola</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">Prezzo (€) <span class="text-danger">*</span></label>
|
||||
<input type="number" step="0.01" class="form-control" name="price" required>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">Durata (giorni)</label>
|
||||
<input type="number" class="form-control" name="duration_days">
|
||||
<small class="text-muted">Lascia vuoto per lezioni singole</small>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">Max Ingressi</label>
|
||||
<input type="number" class="form-control" name="max_entries">
|
||||
<small class="text-muted">Lascia vuoto per abbonamenti illimitati</small>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">Limite settimanale</label>
|
||||
<input type="number" class="form-control" name="weekly_limit">
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">Max Recuperi</label>
|
||||
<input type="number" class="form-control" name="max_recoveries">
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">Validità recuperi (giorni)</label>
|
||||
<input type="number" class="form-control" name="recovery_validity_days">
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">Inventario massimo</label>
|
||||
<input type="number" class="form-control" name="max_inventory">
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">Permetti congelamento</label>
|
||||
<select class="form-select" name="allow_freeze">
|
||||
<option value="0">No</option>
|
||||
<option value="1">Sì</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">Giorni max congelamento</label>
|
||||
<input type="number" class="form-control" name="freeze_max_days">
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">Accesso completo a tutte le classi</label>
|
||||
<select class="form-select" id="add_product_is_full_access" name="is_full_access" onchange="toggleClassTypesSection(this.value, 'add')">
|
||||
<option value="0">No</option>
|
||||
<option value="1">Sì</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">Propaga automaticamente all'ordine</label>
|
||||
<select class="form-select" name="auto_propagate_to_order">
|
||||
<option value="0">No</option>
|
||||
<option value="1">Sì</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<!-- SEZIONE CLASSI (nascondibile) -->
|
||||
<div class="col-12" id="add_class_types_section">
|
||||
<label class="form-label">Classi e orari associati</label>
|
||||
<div class="border rounded p-3" style="max-height: 300px; overflow-y: auto;">
|
||||
<?php foreach ($all_classes as $class_id => $class): ?>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input class-checkbox" type="checkbox" id="add_class_<?php echo $class_id; ?>" data-class-id="<?php echo $class_id; ?>">
|
||||
<label class="form-check-label fw-bold" for="add_class_<?php echo $class_id; ?>">
|
||||
<?php echo htmlspecialchars($class['name']); ?>
|
||||
</label>
|
||||
<?php if (!empty($class['variations'])): ?>
|
||||
<div class="ms-4">
|
||||
<?php foreach ($class['variations'] as $variation): ?>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input variation-checkbox" type="checkbox" name="class_types[]" value="<?php echo $variation['id']; ?>" id="add_variation_<?php echo $variation['id']; ?>" data-class-id="<?php echo $class_id; ?>">
|
||||
<label class="form-check-label" for="add_variation_<?php echo $variation['id']; ?>">
|
||||
<?php echo htmlspecialchars($variation['name']); ?>
|
||||
</label>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Annulla</button>
|
||||
<button type="submit" class="btn btn-primary">Crea Prodotto</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- Modale per aggiungere una variazione a un prodotto esistente -->
|
||||
<!-- Modale per aggiungere una variazione a un prodotto esistente -->
|
||||
<div class="modal fade" id="addVariationModal" tabindex="-1" aria-labelledby="addVariationModalLabel" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="addVariationModalLabel">Aggiungi Variazione</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<form action="" method="POST">
|
||||
<div class="modal-body">
|
||||
<input type="hidden" name="action" value="add_variation">
|
||||
<input type="hidden" name="product_id" id="add_variation_product_id">
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_variation_product_name" class="form-label">Nome Prodotto</label>
|
||||
<input type="text" class="form-control" id="add_variation_product_name" disabled>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_variation_name" class="form-label">Nome Variazione</label>
|
||||
<input type="text" class="form-control" id="add_variation_name" name="variation_name" required placeholder="Es. 5 Ingressi">
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_variation_price" class="form-label">Prezzo (€)</label>
|
||||
<input type="number" step="0.01" class="form-control" id="add_variation_price" name="price" required>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_variation_duration_days" class="form-label">Durata (giorni)</label>
|
||||
<input type="number" class="form-control" id="add_variation_duration_days" name="duration_days">
|
||||
<small class="form-text text-muted">Lascia vuoto per lezioni singole.</small>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_variation_max_entries" class="form-label">Numero Massimo di Ingressi</label>
|
||||
<input type="number" class="form-control" id="add_variation_max_entries" name="max_entries">
|
||||
<small class="form-text text-muted">Lascia vuoto per abbonamenti illimitati.</small>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_variation_weekly_limit" class="form-label">Limite Settimanale</label>
|
||||
<input type="number" class="form-control" id="add_variation_weekly_limit" name="weekly_limit">
|
||||
<small class="form-text text-muted">Lascia vuoto se non applicabile.</small>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_variation_max_recoveries" class="form-label">Numero Massimo di Recuperi</label>
|
||||
<input type="number" class="form-control" id="add_variation_max_recoveries" name="max_recoveries">
|
||||
<small class="form-text text-muted">Lascia vuoto se non applicabile.</small>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_variation_recovery_validity_days" class="form-label">Validità Recuperi (giorni)</label>
|
||||
<input type="number" class="form-control" id="add_variation_recovery_validity_days" name="recovery_validity_days">
|
||||
<small class="form-text text-muted">Lascia vuoto se non applicabile.</small>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_variation_max_inventory" class="form-label">Inventario Massimo</label>
|
||||
<input type="number" class="form-control" id="add_variation_max_inventory" name="max_inventory">
|
||||
<small class="form-text text-muted">Lascia vuoto per illimitato.</small>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_variation_allow_freeze" class="form-label">Permetti Congelamento</label>
|
||||
<select class="form-control" id="add_variation_allow_freeze" name="allow_freeze">
|
||||
<option value="0">No</option>
|
||||
<option value="1">Sì</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_variation_freeze_max_days" class="form-label">Giorni Massimi di Congelamento</label>
|
||||
<input type="number" class="form-control" id="add_variation_freeze_max_days" name="freeze_max_days">
|
||||
<small class="form-text text-muted">Lascia vuoto se non applicabile.</small>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_variation_auto_propagate" class="form-label">Propaga in Automatico all'Ordine</label>
|
||||
<select class="form-control" id="add_variation_auto_propagate" name="auto_propagate_to_order">
|
||||
<option value="0">No</option>
|
||||
<option value="1">Sì</option>
|
||||
</select>
|
||||
<small class="form-text text-muted">Se sì, la variazione verrà aggiunta automaticamente agli ordini futuri.</small>
|
||||
</div>
|
||||
<div class="col-md-12 mb-3" id="add_variation_class_types_section">
|
||||
<label class="form-label">Classi e Variazioni Associate</label>
|
||||
<p class="text-muted small">Se non selezioni nessuna classe, verranno ereditate le classi del prodotto.</p>
|
||||
<?php foreach ($all_classes as $class_id => $class): ?>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input class-checkbox" type="checkbox" id="add_variation_class_<?php echo $class_id; ?>" data-class-id="<?php echo $class_id; ?>">
|
||||
<label class="form-check-label" for="add_variation_class_<?php echo $class_id; ?>">
|
||||
<?php echo htmlspecialchars($class['name']); ?>
|
||||
</label>
|
||||
<?php if (!empty($class['variations'])): ?>
|
||||
<div class="ms-4">
|
||||
<?php foreach ($class['variations'] as $variation): ?>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input variation-checkbox" type="checkbox" name="class_types[]" value="<?php echo $variation['id']; ?>" id="add_variation_variation_<?php echo $variation['id']; ?>" data-class-id="<?php echo $class_id; ?>">
|
||||
<label class="form-check-label" for="add_variation_variation_<?php echo $variation['id']; ?>">
|
||||
<?php echo htmlspecialchars($variation['name']); ?>
|
||||
</label>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
<div class="modal-dialog modal-dialog-centered" style="max-width: 90vw; height: 90vh;">
|
||||
<div class="modal-content d-flex flex-column" style="height: 100%;">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="addVariationModalLabel">Aggiungi Variazione</h5>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
<form action="" method="POST">
|
||||
<div class="modal-body">
|
||||
<input type="hidden" name="action" value="add_variation">
|
||||
<input type="hidden" name="product_id" id="add_variation_product_id">
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_variation_product_name" class="form-label">Nome Prodotto</label>
|
||||
<input type="text" class="form-control" id="add_variation_product_name" disabled>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_variation_name" class="form-label">Nome Variazione</label>
|
||||
<input type="text" class="form-control" id="add_variation_name" name="variation_name" required placeholder="Es. 5 Ingressi">
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_variation_price" class="form-label">Prezzo (€)</label>
|
||||
<input type="number" step="0.01" class="form-control" id="add_variation_price" name="price" required>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_variation_duration_days" class="form-label">Durata (giorni)</label>
|
||||
<input type="number" class="form-control" id="add_variation_duration_days" name="duration_days">
|
||||
<small class="form-text text-muted">Lascia vuoto per lezioni singole.</small>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_variation_max_entries" class="form-label">Numero Massimo di Ingressi</label>
|
||||
<input type="number" class="form-control" id="add_variation_max_entries" name="max_entries">
|
||||
<small class="form-text text-muted">Lascia vuoto per abbonamenti illimitati.</small>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_variation_weekly_limit" class="form-label">Limite Settimanale</label>
|
||||
<input type="number" class="form-control" id="add_variation_weekly_limit" name="weekly_limit">
|
||||
<small class="form-text text-muted">Lascia vuoto se non applicabile.</small>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_variation_max_recoveries" class="form-label">Numero Massimo di Recuperi</label>
|
||||
<input type="number" class="form-control" id="add_variation_max_recoveries" name="max_recoveries">
|
||||
<small class="form-text text-muted">Lascia vuoto se non applicabile.</small>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_variation_recovery_validity_days" class="form-label">Validità Recuperi (giorni)</label>
|
||||
<input type="number" class="form-control" id="add_variation_recovery_validity_days" name="recovery_validity_days">
|
||||
<small class="form-text text-muted">Lascia vuoto se non applicabile.</small>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_variation_max_inventory" class="form-label">Inventario Massimo</label>
|
||||
<input type="number" class="form-control" id="add_variation_max_inventory" name="max_inventory">
|
||||
<small class="form-text text-muted">Lascia vuoto per illimitato.</small>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_variation_allow_freeze" class="form-label">Permetti Congelamento</label>
|
||||
<select class="form-control" id="add_variation_allow_freeze" name="allow_freeze">
|
||||
<option value="0">No</option>
|
||||
<option value="1">Sì</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_variation_freeze_max_days" class="form-label">Giorni Massimi di Congelamento</label>
|
||||
<input type="number" class="form-control" id="add_variation_freeze_max_days" name="freeze_max_days">
|
||||
<small class="form-text text-muted">Lascia vuoto se non applicabile.</small>
|
||||
</div>
|
||||
<div class="col-md-6 mb-3">
|
||||
<label for="add_variation_auto_propagate" class="form-label">Propaga in Automatico all'Ordine</label>
|
||||
<select class="form-control" id="add_variation_auto_propagate" name="auto_propagate_to_order">
|
||||
<option value="0">No</option>
|
||||
<option value="1">Sì</option>
|
||||
</select>
|
||||
<small class="form-text text-muted">Se sì, la variazione verrà aggiunta automaticamente agli ordini futuri.</small>
|
||||
</div>
|
||||
<div class="col-md-12 mb-3" id="add_variation_class_types_section">
|
||||
<label class="form-label">Classi e Variazioni Associate</label>
|
||||
<p class="text-muted small">Se non selezioni nessuna classe, verranno ereditate le classi del prodotto.</p>
|
||||
<?php foreach ($all_classes as $class_id => $class): ?>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input class-checkbox" type="checkbox" id="add_variation_class_<?php echo $class_id; ?>" data-class-id="<?php echo $class_id; ?>">
|
||||
<label class="form-check-label" for="add_variation_class_<?php echo $class_id; ?>">
|
||||
<?php echo htmlspecialchars($class['name']); ?>
|
||||
</label>
|
||||
<?php if (!empty($class['variations'])): ?>
|
||||
<div class="ms-4">
|
||||
<?php foreach ($class['variations'] as $variation): ?>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input variation-checkbox" type="checkbox" name="class_types[]" value="<?php echo $variation['id']; ?>" id="add_variation_variation_<?php echo $variation['id']; ?>" data-class-id="<?php echo $class_id; ?>">
|
||||
<label class="form-check-label" for="add_variation_variation_<?php echo $variation['id']; ?>">
|
||||
<?php echo htmlspecialchars($variation['name']); ?>
|
||||
</label>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
<?php endforeach; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Chiudi</button>
|
||||
<button type="submit" class="btn btn-primary">Aggiungi Variazione</button>
|
||||
</div>
|
||||
</form>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Chiudi</button>
|
||||
<button type="submit" class="btn btn-primary">Aggiungi Variazione</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user