diff --git a/public/userarea/delete_productiondata.php b/public/userarea/delete_productiondata.php
new file mode 100644
index 0000000..69ed81d
--- /dev/null
+++ b/public/userarea/delete_productiondata.php
@@ -0,0 +1,18 @@
+getConnection();
+
+if (empty($_POST['id'])) {
+ echo json_encode(['success' => false, 'msg' => 'ID mancante']);
+ exit;
+}
+
+try {
+ $stmt = $pdo->prepare("DELETE FROM productiondata WHERE id = :id");
+ $stmt->execute(['id' => $_POST['id']]);
+ echo json_encode(['success' => true]);
+} catch (Exception $e) {
+ echo json_encode(['success' => false, 'msg' => $e->getMessage()]);
+}
diff --git a/public/userarea/production_dashboard.php b/public/userarea/production_dashboard.php
index 0712b03..c462def 100644
--- a/public/userarea/production_dashboard.php
+++ b/public/userarea/production_dashboard.php
@@ -110,7 +110,7 @@
max-width: 280px;
border: none;
border-radius: 16px;
- padding: 36px 10px;
+ padding: 24px 10px;
color: #2b3e50;
font-size: 1.3rem;
font-weight: 600;
@@ -266,6 +266,7 @@
+
diff --git a/public/userarea/produzione_programmazione.php b/public/userarea/produzione_programmazione.php
new file mode 100644
index 0000000..f5262fa
--- /dev/null
+++ b/public/userarea/produzione_programmazione.php
@@ -0,0 +1,582 @@
+getConnection();
+
+// --- LISTE SELECT ---
+$matrici = $pdo->query("SELECT id, nome FROM matrice ORDER BY nome")->fetchAll();
+$mescole = $pdo->query("SELECT id, nome FROM mescole ORDER BY nome")->fetchAll();
+$linee = $pdo->query("SELECT id, line_number, name FROM production_lines ORDER BY line_number")->fetchAll();
+$clienti = $pdo->query("SELECT id, nome FROM clients ORDER BY nome")->fetchAll();
+$status_list = $pdo->query("SELECT id, nome, badge_color, line_color FROM production_status ORDER BY ordinamento, nome")->fetchAll();
+
+// --- SALVATAGGIO INLINE ---
+if ($_SERVER['REQUEST_METHOD'] === 'POST' && !empty($_POST['action'])) {
+ $action = $_POST['action'];
+ $data = [
+ 'Data' => $_POST['Data'],
+ 'idmatrice' => $_POST['idmatrice'],
+ 'idmescola' => $_POST['idmescola'],
+ 'id_linea' => $_POST['id_linea'],
+ 'id_cliente' => $_POST['id_cliente'] ?: null,
+ 'data_zibo' => $_POST['data_zibo'] ?: null,
+ 'data_cliente' => $_POST['data_cliente'] ?: null,
+ 'metri' => $_POST['metri'] ?: 0,
+ 'kg_sp' => $_POST['kg_sp'] ?: 0,
+ 'kg_p' => $_POST['kg_p'] ?: 0,
+ 'ore_previste' => $_POST['ore_previste'] ?: 0,
+ 'note_extra' => $_POST['note_extra'] ?: null,
+ 'data_produzione' => $_POST['data_produzione'],
+ 'id_status' => $_POST['id_status'] ?? 1
+ ];
+
+ try {
+ if ($action === 'insert') {
+ $sql = "INSERT INTO productiondata
+ (Data, idmatrice, idmescola, id_linea, id_cliente, data_zibo, data_cliente, metri, kg_sp, kg_p, ore_previste, note_extra, data_produzione, id_status)
+ VALUES
+ (:Data, :idmatrice, :idmescola, :id_linea, :id_cliente, :data_zibo, :data_cliente, :metri, :kg_sp, :kg_p, :ore_previste, :note_extra, :data_produzione, :id_status)";
+ $stmt = $pdo->prepare($sql);
+ $stmt->execute($data);
+ echo json_encode(['success' => true]);
+ } elseif ($action === 'update' && !empty($_POST['id'])) {
+ $data['id'] = $_POST['id'];
+ $sql = "UPDATE productiondata SET
+ Data=:Data, idmatrice=:idmatrice, idmescola=:idmescola, id_linea=:id_linea,
+ id_cliente=:id_cliente, data_zibo=:data_zibo, data_cliente=:data_cliente,
+ metri=:metri, kg_sp=:kg_sp, kg_p=:kg_p, ore_previste=:ore_previste,
+ note_extra=:note_extra, data_produzione=:data_produzione, id_status=:id_status
+ WHERE id = :id";
+ $stmt = $pdo->prepare($sql);
+ $stmt->execute($data);
+ echo json_encode(['success' => true]);
+ }
+ exit;
+ } catch (Exception $e) {
+ echo json_encode(['success' => false, 'msg' => $e->getMessage()]);
+ exit;
+ }
+}
+?>
+
+
+
+
+
+ Programmazione Produzione - = $titlewebsite ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | Data |
+ Matrice |
+ Mescola |
+ Linea |
+ Cliente |
+ Zibo |
+ Cliente |
+ mt |
+ kg sp |
+ kg p |
+ Ore |
+ Note |
+ Prod. |
+ Status |
+ Azioni |
+
+
+
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+
+
+
+ query($sql) as $r) {
+ $lineColor = htmlspecialchars($r['line_color'] ?? '#ffffff');
+ $badgeColor = htmlspecialchars($r['badge_color'] ?? '#6c757d');
+ $statusName = htmlspecialchars(ucfirst($r['status_nome'] ?? 'N/D'));
+
+ echo "
+ | " . date('d/m', strtotime($r['Data'])) . "
+ |
+ {$r['matrice']}
+ |
+ {$r['mescola']}
+ |
+ {$r['linea']}
+ |
+ " . ($r['cliente'] ?? '-') . "
+ |
+ " . ($r['data_zibo'] ? date('d/m', strtotime($r['data_zibo'])) : '-') . "
+ |
+ " . ($r['data_cliente'] ? date('d/m', strtotime($r['data_cliente'])) : '-') . "
+ |
+ {$r['metri']} |
+ {$r['kg_sp']} |
+ {$r['kg_p']} |
+ {$r['ore_previste']} |
+ " . htmlspecialchars($r['note_extra'] ?? '') . "
+ |
+ " . date('d/m', strtotime($r['data_produzione'])) . "
+ |
+
+ {$statusName}
+
+ |
+
+
+
+
+
+ |
+
";
+ }
+
+ function selectOptions($arr, $sel = null, $val = 'id', $txt = 'nome')
+ {
+ $opt = '';
+ foreach ($arr as $a) {
+ $selected = ($sel !== null && $a[$val] == $sel) ? 'selected' : '';
+ $opt .= "";
+ }
+ return $opt;
+ }
+ ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file