dashboard fix
This commit is contained in:
@@ -196,42 +196,54 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && !empty($_POST['stop_production']))
|
||||
|
||||
// --- SALVATAGGIO DATI FINE PRODUZIONE ---
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST' && !empty($_POST['save_final_data'])) {
|
||||
$id = (int)$_POST['id'];
|
||||
|
||||
$id = (int)$_POST['id'];
|
||||
$kgprod = (float)$_POST['kgprod'];
|
||||
$mtprod = (float)$_POST['mtprod'];
|
||||
$scarto = (float)$_POST['scarto'];
|
||||
$note = trim($_POST['note'] ?? '');
|
||||
$note = trim($_POST['note'] ?? '');
|
||||
$reason = $_POST['reason'] ?? 'fine';
|
||||
|
||||
try {
|
||||
// Calcolo automatico del tempo totale in ore
|
||||
// Recupero tempo totale già calcolato
|
||||
$sql = "SELECT tempo_totale_produzione FROM productiondata WHERE id = :id";
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute(['id' => $id]);
|
||||
$seconds = (int)$stmt->fetchColumn();
|
||||
$hours = round($seconds / 3600, 2);
|
||||
|
||||
// Stato di destinazione
|
||||
// Calcolo scarto %
|
||||
$totaleKg = $kgprod + $scarto;
|
||||
$scartoPerc = 0.00;
|
||||
|
||||
if ($totaleKg > 0) {
|
||||
$scartoPerc = round(($scarto / $totaleKg) * 100, 2);
|
||||
}
|
||||
|
||||
// Stato destinazione
|
||||
$nextStatus = ($reason === 'problema') ? 8 : $statusQualita;
|
||||
|
||||
// Update finale
|
||||
$sql = "UPDATE productiondata
|
||||
SET kgprod = :kgprod,
|
||||
mtprod = :mtprod,
|
||||
scarto = :scarto,
|
||||
note_operatore = :note,
|
||||
hourprod = SEC_TO_TIME(:seconds),
|
||||
id_status = :status,
|
||||
end_time = COALESCE(end_time, UTC_TIMESTAMP())
|
||||
WHERE id = :id";
|
||||
SET kgprod = :kgprod,
|
||||
mtprod = :mtprod,
|
||||
scarto = :scarto,
|
||||
scarto_perc = :scarto_perc,
|
||||
note_operatore = :note,
|
||||
hourprod = SEC_TO_TIME(:seconds),
|
||||
id_status = :status,
|
||||
end_time = COALESCE(end_time, UTC_TIMESTAMP())
|
||||
WHERE id = :id";
|
||||
|
||||
$stmt = $pdo->prepare($sql);
|
||||
$stmt->execute([
|
||||
'kgprod' => $kgprod,
|
||||
'mtprod' => $mtprod,
|
||||
'scarto' => $scarto,
|
||||
'note' => $note,
|
||||
'seconds' => $seconds,
|
||||
'status' => $nextStatus,
|
||||
'id' => $id
|
||||
'kgprod' => $kgprod,
|
||||
'mtprod' => $mtprod,
|
||||
'scarto' => $scarto,
|
||||
'scarto_perc' => $scartoPerc,
|
||||
'note' => $note,
|
||||
'seconds' => $seconds,
|
||||
'status' => $nextStatus,
|
||||
'id' => $id
|
||||
]);
|
||||
|
||||
echo json_encode(['success' => true]);
|
||||
@@ -241,6 +253,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && !empty($_POST['save_final_data']))
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// --- AJAX PRINCIPALE: carica i record della data selezionata ---
|
||||
if (!empty($_GET['ajax'])) {
|
||||
|
||||
@@ -913,6 +927,11 @@ if (!empty($_GET['ajax'])) {
|
||||
<input type="number" id="scarto" step="0.01" min="0" placeholder="0.00"
|
||||
class="input-big">
|
||||
|
||||
<label><strong>Scarto (%):</strong></label>
|
||||
<input type="text" id="scartoPerc" class="input-big" readonly>
|
||||
|
||||
|
||||
|
||||
<label><strong>Note operatore:</strong></label>
|
||||
<textarea id="finalNote" rows="3" class="input-big"></textarea>
|
||||
</div>
|
||||
@@ -1387,6 +1406,9 @@ if (!empty($_GET['ajax'])) {
|
||||
// Pulisci i campi reali
|
||||
$('#kgprod, #mtprod, #scarto').val('');
|
||||
$('#finalNote').val(note || '');
|
||||
$('#kgprod, #scarto').off('input').on('input', recalcScrapPerc);
|
||||
$('#scartoPerc').val('');
|
||||
|
||||
|
||||
// Recupera i dati teorici del record
|
||||
const card = $(`.record-card[data-id="${id}"]`);
|
||||
@@ -1430,6 +1452,20 @@ if (!empty($_GET['ajax'])) {
|
||||
});
|
||||
}
|
||||
|
||||
function recalcScrapPerc() {
|
||||
const kg = parseFloat($('#kgprod').val()) || 0;
|
||||
const sc = parseFloat($('#scarto').val()) || 0;
|
||||
const tot = kg + sc;
|
||||
let perc = 0;
|
||||
|
||||
if (tot > 0) {
|
||||
perc = (sc / tot) * 100;
|
||||
}
|
||||
|
||||
$('#scartoPerc').val(perc.toFixed(2) + ' %');
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// --- START PRODUZIONE ---
|
||||
|
||||
Reference in New Issue
Block a user