fixed imballaggi worksheet
This commit is contained in:
@@ -12,13 +12,12 @@ $worksheet_id = isset($_GET['id']) && is_numeric($_GET['id']) ? (int)$_GET['id']
|
|||||||
|
|
||||||
// AJAX HANDLERS
|
// AJAX HANDLERS
|
||||||
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['ajax']) && $_POST['ajax'] == '1') {
|
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['ajax']) && $_POST['ajax'] == '1') {
|
||||||
// Ensure clean JSON output (remove any echoed HTML/notices)
|
// Ensure clean JSON output
|
||||||
while (ob_get_level()) {
|
while (ob_get_level()) {
|
||||||
ob_end_clean();
|
ob_end_clean();
|
||||||
}
|
}
|
||||||
header('Content-Type: application/json; charset=utf-8');
|
|
||||||
|
|
||||||
header('Content-Type: application/json');
|
header('Content-Type: application/json; charset=utf-8');
|
||||||
|
|
||||||
$action = $_POST['action'] ?? '';
|
$action = $_POST['action'] ?? '';
|
||||||
|
|
||||||
@@ -45,6 +44,12 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['ajax']) && $_POST['aj
|
|||||||
$freq_jig = trim($_POST['control_frequency_jig'] ?? '');
|
$freq_jig = trim($_POST['control_frequency_jig'] ?? '');
|
||||||
$mode_jig = trim($_POST['control_mode_jig'] ?? '');
|
$mode_jig = trim($_POST['control_mode_jig'] ?? '');
|
||||||
|
|
||||||
|
// Package data moved to worksheet header
|
||||||
|
$requested_package_code = trim($_POST['requested_package_code'] ?? '');
|
||||||
|
$meters_per_package = $_POST['meters_per_package'] !== '' ? (int)$_POST['meters_per_package'] : null;
|
||||||
|
$meters_per_package_tolerance = trim($_POST['meters_per_package_tolerance'] ?? '');
|
||||||
|
$meters_per_package_notes = trim($_POST['meters_per_package_notes'] ?? '');
|
||||||
|
|
||||||
$box_type = trim($_POST['box_type'] ?? '');
|
$box_type = trim($_POST['box_type'] ?? '');
|
||||||
$pkg_box = $_POST['packages_or_pieces_per_box'] !== '' ? (int)$_POST['packages_or_pieces_per_box'] : null;
|
$pkg_box = $_POST['packages_or_pieces_per_box'] !== '' ? (int)$_POST['packages_or_pieces_per_box'] : null;
|
||||||
$m_box = $_POST['meters_per_box'] !== '' ? (int)$_POST['meters_per_box'] : null;
|
$m_box = $_POST['meters_per_box'] !== '' ? (int)$_POST['meters_per_box'] : null;
|
||||||
@@ -73,6 +78,10 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['ajax']) && $_POST['aj
|
|||||||
control_frequency_drawing = ?,
|
control_frequency_drawing = ?,
|
||||||
control_frequency_jig = ?,
|
control_frequency_jig = ?,
|
||||||
control_mode_jig = ?,
|
control_mode_jig = ?,
|
||||||
|
requested_package_code = ?,
|
||||||
|
meters_per_package = ?,
|
||||||
|
meters_per_package_tolerance = ?,
|
||||||
|
meters_per_package_notes = ?,
|
||||||
box_type = ?,
|
box_type = ?,
|
||||||
packages_or_pieces_per_box = ?,
|
packages_or_pieces_per_box = ?,
|
||||||
meters_per_box = ?,
|
meters_per_box = ?,
|
||||||
@@ -97,6 +106,10 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['ajax']) && $_POST['aj
|
|||||||
$freq_draw !== '' ? $freq_draw : null,
|
$freq_draw !== '' ? $freq_draw : null,
|
||||||
$freq_jig !== '' ? $freq_jig : null,
|
$freq_jig !== '' ? $freq_jig : null,
|
||||||
$mode_jig !== '' ? $mode_jig : null,
|
$mode_jig !== '' ? $mode_jig : null,
|
||||||
|
$requested_package_code !== '' ? $requested_package_code : null,
|
||||||
|
$meters_per_package,
|
||||||
|
$meters_per_package_tolerance !== '' ? $meters_per_package_tolerance : null,
|
||||||
|
$meters_per_package_notes !== '' ? $meters_per_package_notes : null,
|
||||||
$box_type !== '' ? $box_type : null,
|
$box_type !== '' ? $box_type : null,
|
||||||
$pkg_box,
|
$pkg_box,
|
||||||
$m_box,
|
$m_box,
|
||||||
@@ -117,19 +130,26 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['ajax']) && $_POST['aj
|
|||||||
|
|
||||||
$stmt = $pdo->prepare("
|
$stmt = $pdo->prepare("
|
||||||
INSERT INTO work_sheets
|
INSERT INTO work_sheets
|
||||||
(idmatrice, worksheet_date, customer_name, profile_type_code, marking,
|
(
|
||||||
prod_control_measure_settings, control_frequency_cut, control_frequency_drawing, control_frequency_jig, control_mode_jig,
|
idmatrice, worksheet_date, customer_name, profile_type_code, marking,
|
||||||
box_type, packages_or_pieces_per_box, meters_per_box,
|
prod_control_measure_settings, control_frequency_cut, control_frequency_drawing,
|
||||||
pallet_type, boxes_or_packages_per_pallet,
|
control_frequency_jig, control_mode_jig,
|
||||||
speed_expected_kg_h, speed_actual_kg_h, speed_expected_m_h, speed_actual_m_h,
|
requested_package_code, meters_per_package, meters_per_package_tolerance, meters_per_package_notes,
|
||||||
approved_by, notes)
|
box_type, packages_or_pieces_per_box, meters_per_box,
|
||||||
|
pallet_type, boxes_or_packages_per_pallet,
|
||||||
|
speed_expected_kg_h, speed_actual_kg_h, speed_expected_m_h, speed_actual_m_h,
|
||||||
|
approved_by, notes
|
||||||
|
)
|
||||||
VALUES
|
VALUES
|
||||||
(?, ?, ?, ?, ?,
|
(
|
||||||
?, ?, ?, ?, ?,
|
?, ?, ?, ?, ?,
|
||||||
?, ?, ?,
|
?, ?, ?, ?, ?,
|
||||||
?, ?,
|
?, ?, ?, ?,
|
||||||
?, ?, ?, ?,
|
?, ?, ?,
|
||||||
?, ?)
|
?, ?,
|
||||||
|
?, ?, ?, ?,
|
||||||
|
?, ?
|
||||||
|
)
|
||||||
");
|
");
|
||||||
$stmt->execute([
|
$stmt->execute([
|
||||||
$idmatrice,
|
$idmatrice,
|
||||||
@@ -142,6 +162,10 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['ajax']) && $_POST['aj
|
|||||||
$freq_draw !== '' ? $freq_draw : null,
|
$freq_draw !== '' ? $freq_draw : null,
|
||||||
$freq_jig !== '' ? $freq_jig : null,
|
$freq_jig !== '' ? $freq_jig : null,
|
||||||
$mode_jig !== '' ? $mode_jig : null,
|
$mode_jig !== '' ? $mode_jig : null,
|
||||||
|
$requested_package_code !== '' ? $requested_package_code : null,
|
||||||
|
$meters_per_package,
|
||||||
|
$meters_per_package_tolerance !== '' ? $meters_per_package_tolerance : null,
|
||||||
|
$meters_per_package_notes !== '' ? $meters_per_package_notes : null,
|
||||||
$box_type !== '' ? $box_type : null,
|
$box_type !== '' ? $box_type : null,
|
||||||
$pkg_box,
|
$pkg_box,
|
||||||
$m_box,
|
$m_box,
|
||||||
@@ -168,10 +192,9 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['ajax']) && $_POST['aj
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
$row_id = (int)($_POST['row_id'] ?? 0);
|
$row_id = (int)($_POST['row_id'] ?? 0);
|
||||||
$idmescola = (int)($_POST['idmescola'] ?? 0);
|
$idmescola = (int)($_POST['idmescola'] ?? 0);
|
||||||
$pos = 0; // auto-assign
|
$pos = 0; // auto-assign
|
||||||
|
|
||||||
|
|
||||||
if ($idmescola <= 0) {
|
if ($idmescola <= 0) {
|
||||||
echo json_encode(['success' => false, 'message' => 'Seleziona una mescola']);
|
echo json_encode(['success' => false, 'message' => 'Seleziona una mescola']);
|
||||||
@@ -186,43 +209,19 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['ajax']) && $_POST['aj
|
|||||||
$lub_type = ($_POST['lubrication_type'] ?? '') !== '' ? $_POST['lubrication_type'] : null;
|
$lub_type = ($_POST['lubrication_type'] ?? '') !== '' ? $_POST['lubrication_type'] : null;
|
||||||
$lub_note = trim($_POST['lubrication_notes'] ?? '');
|
$lub_note = trim($_POST['lubrication_notes'] ?? '');
|
||||||
|
|
||||||
$pkg_code = trim($_POST['requested_package_code'] ?? '');
|
|
||||||
$m_pkg = $_POST['meters_per_package'] !== '' ? (int)$_POST['meters_per_package'] : null;
|
|
||||||
$m_pkg_note = trim($_POST['meters_per_package_notes'] ?? '');
|
|
||||||
$m_pkg_tol = trim($_POST['meters_per_package_tolerance'] ?? '');
|
|
||||||
|
|
||||||
// Use transaction to keep constraints consistent
|
|
||||||
$pdo->beginTransaction();
|
$pdo->beginTransaction();
|
||||||
|
|
||||||
if ($row_id > 0) {
|
if ($row_id > 0) {
|
||||||
|
|
||||||
// Auto-assign mix_position = max + 1 for this worksheet
|
|
||||||
$stmtPos = $pdo->prepare("
|
|
||||||
SELECT IFNULL(MAX(mix_position), 0) + 1
|
|
||||||
FROM work_sheet_mescole
|
|
||||||
WHERE worksheet_id = ?
|
|
||||||
FOR UPDATE
|
|
||||||
");
|
|
||||||
$stmtPos->execute([$worksheet_id]);
|
|
||||||
$pos = (int)$stmtPos->fetchColumn();
|
|
||||||
if ($pos <= 0) $pos = 1;
|
|
||||||
|
|
||||||
|
|
||||||
$stmt = $pdo->prepare("
|
$stmt = $pdo->prepare("
|
||||||
UPDATE work_sheet_mescole SET
|
UPDATE work_sheet_mescole SET
|
||||||
idmescola = ?,
|
idmescola = ?,
|
||||||
mix_weight_g_m = ?,
|
mix_weight_g_m = ?,
|
||||||
required_density = ?,
|
required_density = ?,
|
||||||
required_hardness_shore_a = ?,
|
required_hardness_shore_a = ?,
|
||||||
lubrication_type = ?,
|
lubrication_type = ?,
|
||||||
lubrication_notes = ?,
|
lubrication_notes = ?
|
||||||
requested_package_code = ?,
|
WHERE id = ? AND worksheet_id = ?
|
||||||
meters_per_package = ?,
|
");
|
||||||
meters_per_package_notes = ?,
|
|
||||||
meters_per_package_tolerance = ?
|
|
||||||
WHERE id = ? AND worksheet_id = ?
|
|
||||||
");
|
|
||||||
|
|
||||||
$stmt->execute([
|
$stmt->execute([
|
||||||
$idmescola,
|
$idmescola,
|
||||||
$mix_weight,
|
$mix_weight,
|
||||||
@@ -230,37 +229,33 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['ajax']) && $_POST['aj
|
|||||||
$hardness !== '' ? $hardness : null,
|
$hardness !== '' ? $hardness : null,
|
||||||
$lub_type,
|
$lub_type,
|
||||||
$lub_note !== '' ? $lub_note : null,
|
$lub_note !== '' ? $lub_note : null,
|
||||||
$pkg_code !== '' ? $pkg_code : null,
|
|
||||||
$m_pkg,
|
|
||||||
$m_pkg_note !== '' ? $m_pkg_note : null,
|
|
||||||
$m_pkg_tol !== '' ? $m_pkg_tol : null,
|
|
||||||
$row_id,
|
$row_id,
|
||||||
$worksheet_id
|
$worksheet_id
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
||||||
$pdo->commit();
|
$pdo->commit();
|
||||||
echo json_encode(['success' => true]);
|
echo json_encode(['success' => true]);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// If position already used, auto-assign next (max+1)
|
$stmtPos = $pdo->prepare("
|
||||||
$chk = $pdo->prepare("SELECT COUNT(*) FROM work_sheet_mescole WHERE worksheet_id = ? AND mix_position = ?");
|
SELECT IFNULL(MAX(mix_position), 0) + 1
|
||||||
$chk->execute([$worksheet_id, $pos]);
|
FROM work_sheet_mescole
|
||||||
if ((int)$chk->fetchColumn() > 0) {
|
WHERE worksheet_id = ?
|
||||||
$mx = $pdo->prepare("SELECT IFNULL(MAX(mix_position),0) + 1 FROM work_sheet_mescole WHERE worksheet_id = ?");
|
FOR UPDATE
|
||||||
$mx->execute([$worksheet_id]);
|
");
|
||||||
$pos = (int)$mx->fetchColumn();
|
$stmtPos->execute([$worksheet_id]);
|
||||||
}
|
$pos = (int)$stmtPos->fetchColumn();
|
||||||
|
if ($pos <= 0) $pos = 1;
|
||||||
|
|
||||||
|
|
||||||
$stmt = $pdo->prepare("
|
$stmt = $pdo->prepare("
|
||||||
INSERT INTO work_sheet_mescole
|
INSERT INTO work_sheet_mescole
|
||||||
(worksheet_id, idmescola, mix_position, mix_weight_g_m, required_density, required_hardness_shore_a,
|
(
|
||||||
lubrication_type, lubrication_notes,
|
worksheet_id, idmescola, mix_position, mix_weight_g_m,
|
||||||
requested_package_code, meters_per_package, meters_per_package_notes, meters_per_package_tolerance)
|
required_density, required_hardness_shore_a,
|
||||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
lubrication_type, lubrication_notes
|
||||||
|
)
|
||||||
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?)
|
||||||
");
|
");
|
||||||
$stmt->execute([
|
$stmt->execute([
|
||||||
$worksheet_id,
|
$worksheet_id,
|
||||||
@@ -270,11 +265,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['ajax']) && $_POST['aj
|
|||||||
$density !== '' ? $density : null,
|
$density !== '' ? $density : null,
|
||||||
$hardness !== '' ? $hardness : null,
|
$hardness !== '' ? $hardness : null,
|
||||||
$lub_type,
|
$lub_type,
|
||||||
$lub_note !== '' ? $lub_note : null,
|
$lub_note !== '' ? $lub_note : null
|
||||||
$pkg_code !== '' ? $pkg_code : null,
|
|
||||||
$m_pkg,
|
|
||||||
$m_pkg_note !== '' ? $m_pkg_note : null,
|
|
||||||
$m_pkg_tol !== '' ? $m_pkg_tol : null
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$pdo->commit();
|
$pdo->commit();
|
||||||
@@ -300,7 +291,9 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['ajax']) && $_POST['aj
|
|||||||
echo json_encode(['success' => false, 'message' => 'Azione sconosciuta']);
|
echo json_encode(['success' => false, 'message' => 'Azione sconosciuta']);
|
||||||
exit;
|
exit;
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
if ($pdo->inTransaction()) $pdo->rollBack();
|
if ($pdo->inTransaction()) {
|
||||||
|
$pdo->rollBack();
|
||||||
|
}
|
||||||
echo json_encode(['success' => false, 'message' => $e->getMessage()]);
|
echo json_encode(['success' => false, 'message' => $e->getMessage()]);
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
@@ -313,7 +306,7 @@ $matrici = $pdo->query("
|
|||||||
ORDER BY nome ASC
|
ORDER BY nome ASC
|
||||||
")->fetchAll(PDO::FETCH_ASSOC);
|
")->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
// Load worksheet lookup options
|
// Load generic worksheet lookup options
|
||||||
$lookup = [];
|
$lookup = [];
|
||||||
$lookupDefault = [];
|
$lookupDefault = [];
|
||||||
|
|
||||||
@@ -333,6 +326,33 @@ foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $r) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Load packaging items from dedicated table
|
||||||
|
$packagingLookup = [
|
||||||
|
'PACKAGING_TYPE' => [],
|
||||||
|
'BOX' => [],
|
||||||
|
'PALLET' => []
|
||||||
|
];
|
||||||
|
|
||||||
|
$stmt = $pdo->prepare("
|
||||||
|
SELECT category, item_name, item_code
|
||||||
|
FROM packaging_items
|
||||||
|
WHERE is_active = 1
|
||||||
|
AND category IN ('PACKAGING_TYPE', 'BOX', 'PALLET')
|
||||||
|
ORDER BY category ASC, item_name ASC
|
||||||
|
");
|
||||||
|
$stmt->execute();
|
||||||
|
|
||||||
|
foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $r) {
|
||||||
|
$label = $r['item_name'];
|
||||||
|
if (!empty($r['item_code'])) {
|
||||||
|
$label .= ' — ' . $r['item_code'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$packagingLookup[$r['category']][] = [
|
||||||
|
'value' => $r['item_code'],
|
||||||
|
'label' => $label
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
// Load mescole dropdown for modal
|
// Load mescole dropdown for modal
|
||||||
$mescole = $pdo->query("
|
$mescole = $pdo->query("
|
||||||
@@ -398,9 +418,25 @@ function ws_options($rows, $selectedValue, $defaultValue = '')
|
|||||||
return $html;
|
return $html;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function packaging_options($rows, $selectedValue = '')
|
||||||
|
{
|
||||||
|
$selectedValue = (string)$selectedValue;
|
||||||
|
|
||||||
|
$html = '<option value="">--</option>';
|
||||||
|
if (!$rows) return $html;
|
||||||
|
|
||||||
|
foreach ($rows as $r) {
|
||||||
|
$val = h($r['value']);
|
||||||
|
$lab = h($r['label']);
|
||||||
|
$sel = ((string)$r['value'] === $selectedValue) ? ' selected' : '';
|
||||||
|
$html .= "<option value=\"{$val}\"{$sel}>{$lab}</option>";
|
||||||
|
}
|
||||||
|
|
||||||
|
return $html;
|
||||||
|
}
|
||||||
|
|
||||||
$isEdit = ($worksheet_id > 0);
|
$isEdit = ($worksheet_id > 0);
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="it">
|
<html lang="it">
|
||||||
|
|
||||||
@@ -411,7 +447,6 @@ $isEdit = ($worksheet_id > 0);
|
|||||||
<title><?= $isEdit ? 'Modifica Foglio di Lavoro' : 'Nuovo Foglio di Lavoro' ?></title>
|
<title><?= $isEdit ? 'Modifica Foglio di Lavoro' : 'Nuovo Foglio di Lavoro' ?></title>
|
||||||
|
|
||||||
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
|
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
|
||||||
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
|
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://cdn.datatables.net/1.13.6/css/dataTables.bootstrap5.min.css">
|
<link rel="stylesheet" href="https://cdn.datatables.net/1.13.6/css/dataTables.bootstrap5.min.css">
|
||||||
@@ -422,7 +457,6 @@ $isEdit = ($worksheet_id > 0);
|
|||||||
<link href="https://cdn.jsdelivr.net/npm/@ttskch/select2-bootstrap4-theme@1.5.2/dist/select2-bootstrap4.min.css" rel="stylesheet" />
|
<link href="https://cdn.jsdelivr.net/npm/@ttskch/select2-bootstrap4-theme@1.5.2/dist/select2-bootstrap4.min.css" rel="stylesheet" />
|
||||||
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
|
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
|
||||||
|
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
body {
|
body {
|
||||||
font-size: 0.95rem;
|
font-size: 0.95rem;
|
||||||
@@ -492,7 +526,6 @@ $isEdit = ($worksheet_id > 0);
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<!-- HEADER FORM -->
|
|
||||||
<form id="worksheetHeaderForm">
|
<form id="worksheetHeaderForm">
|
||||||
<input type="hidden" name="id" id="wsId" value="<?= (int)$worksheet_id ?>">
|
<input type="hidden" name="id" id="wsId" value="<?= (int)$worksheet_id ?>">
|
||||||
|
|
||||||
@@ -533,7 +566,6 @@ $isEdit = ($worksheet_id > 0);
|
|||||||
<select class="form-select" name="marking" id="marking">
|
<select class="form-select" name="marking" id="marking">
|
||||||
<?= ws_options($lookup['marking'] ?? [], $worksheet['marking'] ?? '', $lookupDefault['marking'] ?? '') ?>
|
<?= ws_options($lookup['marking'] ?? [], $worksheet['marking'] ?? '', $lookupDefault['marking'] ?? '') ?>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
@@ -552,53 +584,79 @@ $isEdit = ($worksheet_id > 0);
|
|||||||
<select class="form-select" name="control_frequency_cut" id="control_frequency_cut">
|
<select class="form-select" name="control_frequency_cut" id="control_frequency_cut">
|
||||||
<?= ws_options($lookup['control_frequency_cut'] ?? [], $worksheet['control_frequency_cut'] ?? '', $lookupDefault['control_frequency_cut'] ?? '') ?>
|
<?= ws_options($lookup['control_frequency_cut'] ?? [], $worksheet['control_frequency_cut'] ?? '', $lookupDefault['control_frequency_cut'] ?? '') ?>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<label class="form-label fw-semibold">Controlli - Disegno</label>
|
<label class="form-label fw-semibold">Controlli - Disegno</label>
|
||||||
<select class="form-select" name="control_frequency_drawing" id="control_frequency_drawing">
|
<select class="form-select" name="control_frequency_drawing" id="control_frequency_drawing">
|
||||||
<?= ws_options($lookup['control_frequency_drawing'] ?? [], $worksheet['control_frequency_drawing'] ?? '', $lookupDefault['control_frequency_drawing'] ?? '') ?>
|
<?= ws_options($lookup['control_frequency_drawing'] ?? [], $worksheet['control_frequency_drawing'] ?? '', $lookupDefault['control_frequency_drawing'] ?? '') ?>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<label class="form-label fw-semibold">Controlli - Dima</label>
|
<label class="form-label fw-semibold">Controlli - Dima</label>
|
||||||
<select class="form-select" name="control_frequency_jig" id="control_frequency_jig">
|
<select class="form-select" name="control_frequency_jig" id="control_frequency_jig">
|
||||||
<?= ws_options($lookup['control_frequency_jig'] ?? [], $worksheet['control_frequency_jig'] ?? '', $lookupDefault['control_frequency_jig'] ?? '') ?>
|
<?= ws_options($lookup['control_frequency_jig'] ?? [], $worksheet['control_frequency_jig'] ?? '', $lookupDefault['control_frequency_jig'] ?? '') ?>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<label class="form-label fw-semibold">Modalità dima</label>
|
<label class="form-label fw-semibold">Modalità dima</label>
|
||||||
<select class="form-select" name="control_mode_jig" id="control_mode_jig">
|
<select class="form-select" name="control_mode_jig" id="control_mode_jig">
|
||||||
<?= ws_options($lookup['control_mode_jig'] ?? [], $worksheet['control_mode_jig'] ?? '', $lookupDefault['control_mode_jig'] ?? '') ?>
|
<?= ws_options($lookup['control_mode_jig'] ?? [], $worksheet['control_mode_jig'] ?? '', $lookupDefault['control_mode_jig'] ?? '') ?>
|
||||||
</select>
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label class="form-label fw-semibold">Codice confezione</label>
|
||||||
|
<select class="form-select" name="requested_package_code" id="requested_package_code">
|
||||||
|
<?= packaging_options($packagingLookup['PACKAGING_TYPE'] ?? [], $worksheet['requested_package_code'] ?? '') ?>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label class="form-label fw-semibold">Metri per confezione</label>
|
||||||
|
<input type="number" class="form-control" name="meters_per_package"
|
||||||
|
value="<?= $worksheet ? h($worksheet['meters_per_package']) : '' ?>">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-md-4">
|
||||||
|
<label class="form-label fw-semibold">Tolleranza metri/confezione</label>
|
||||||
|
<input type="text" class="form-control" name="meters_per_package_tolerance"
|
||||||
|
value="<?= $worksheet ? h($worksheet['meters_per_package_tolerance']) : '' ?>"
|
||||||
|
placeholder="es. +/- 4m">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="col-12">
|
||||||
|
<label class="form-label fw-semibold">Note metri/confezione</label>
|
||||||
|
<input type="text" class="form-control" name="meters_per_package_notes"
|
||||||
|
value="<?= $worksheet ? h($worksheet['meters_per_package_notes']) : '' ?>">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<label class="form-label fw-semibold">Scatola (tipo)</label>
|
<label class="form-label fw-semibold">Scatola (tipo)</label>
|
||||||
<select class="form-select" name="box_type" id="box_type">
|
<select class="form-select" name="box_type" id="box_type">
|
||||||
<?= ws_options($lookup['box_type'] ?? [], $worksheet['box_type'] ?? '', $lookupDefault['box_type'] ?? '') ?>
|
<?= packaging_options($packagingLookup['BOX'] ?? [], $worksheet['box_type'] ?? '') ?>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<label class="form-label fw-semibold">N° conf./pezzi per scatola</label>
|
<label class="form-label fw-semibold">N° conf./pezzi per scatola</label>
|
||||||
<input type="number" class="form-control" name="packages_or_pieces_per_box"
|
<input type="number" class="form-control" name="packages_or_pieces_per_box"
|
||||||
value="<?= $worksheet ? h($worksheet['packages_or_pieces_per_box']) : '' ?>">
|
value="<?= $worksheet ? h($worksheet['packages_or_pieces_per_box']) : '' ?>">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<label class="form-label fw-semibold">Metri per scatola</label>
|
<label class="form-label fw-semibold">Metri per scatola</label>
|
||||||
<input type="number" class="form-control" name="meters_per_box"
|
<input type="number" class="form-control" name="meters_per_box"
|
||||||
value="<?= $worksheet ? h($worksheet['meters_per_box']) : '' ?>">
|
value="<?= $worksheet ? h($worksheet['meters_per_box']) : '' ?>">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<label class="form-label fw-semibold">Bancale (tipo)</label>
|
<label class="form-label fw-semibold">Bancale (tipo)</label>
|
||||||
<select class="form-select" name="pallet_type" id="pallet_type">
|
<select class="form-select" name="pallet_type" id="pallet_type">
|
||||||
<?= ws_options($lookup['pallet_type'] ?? [], $worksheet['pallet_type'] ?? '', $lookupDefault['pallet_type'] ?? '') ?>
|
<?= packaging_options($packagingLookup['PALLET'] ?? [], $worksheet['pallet_type'] ?? '') ?>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
@@ -612,16 +670,19 @@ $isEdit = ($worksheet_id > 0);
|
|||||||
<input type="number" step="0.01" class="form-control" name="speed_expected_kg_h"
|
<input type="number" step="0.01" class="form-control" name="speed_expected_kg_h"
|
||||||
value="<?= $worksheet ? h($worksheet['speed_expected_kg_h']) : '' ?>">
|
value="<?= $worksheet ? h($worksheet['speed_expected_kg_h']) : '' ?>">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<label class="form-label fw-semibold">Vel. effettiva (kg/h)</label>
|
<label class="form-label fw-semibold">Vel. effettiva (kg/h)</label>
|
||||||
<input type="number" step="0.01" class="form-control" name="speed_actual_kg_h"
|
<input type="number" step="0.01" class="form-control" name="speed_actual_kg_h"
|
||||||
value="<?= $worksheet ? h($worksheet['speed_actual_kg_h']) : '' ?>">
|
value="<?= $worksheet ? h($worksheet['speed_actual_kg_h']) : '' ?>">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<label class="form-label fw-semibold">Vel. prevista (m/h)</label>
|
<label class="form-label fw-semibold">Vel. prevista (m/h)</label>
|
||||||
<input type="number" step="0.01" class="form-control" name="speed_expected_m_h"
|
<input type="number" step="0.01" class="form-control" name="speed_expected_m_h"
|
||||||
value="<?= $worksheet ? h($worksheet['speed_expected_m_h']) : '' ?>">
|
value="<?= $worksheet ? h($worksheet['speed_expected_m_h']) : '' ?>">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-3">
|
<div class="col-md-3">
|
||||||
<label class="form-label fw-semibold">Vel. effettiva (m/h)</label>
|
<label class="form-label fw-semibold">Vel. effettiva (m/h)</label>
|
||||||
<input type="number" step="0.01" class="form-control" name="speed_actual_m_h"
|
<input type="number" step="0.01" class="form-control" name="speed_actual_m_h"
|
||||||
@@ -645,7 +706,6 @@ $isEdit = ($worksheet_id > 0);
|
|||||||
|
|
||||||
<hr class="my-4">
|
<hr class="my-4">
|
||||||
|
|
||||||
<!-- MIX ROWS TABLE -->
|
|
||||||
<div class="d-flex justify-content-between align-items-center mb-2">
|
<div class="d-flex justify-content-between align-items-center mb-2">
|
||||||
<div class="section-title">Mescole associate al foglio</div>
|
<div class="section-title">Mescole associate al foglio</div>
|
||||||
<div class="small-hint">Usa “Aggiungi Mescola” per inserire una o più righe</div>
|
<div class="small-hint">Usa “Aggiungi Mescola” per inserire una o più righe</div>
|
||||||
@@ -661,8 +721,6 @@ $isEdit = ($worksheet_id > 0);
|
|||||||
<th>Densità</th>
|
<th>Densità</th>
|
||||||
<th>Durezza</th>
|
<th>Durezza</th>
|
||||||
<th>Lubr.</th>
|
<th>Lubr.</th>
|
||||||
<th>Confez.</th>
|
|
||||||
<th>m/conf.</th>
|
|
||||||
<th>Azioni</th>
|
<th>Azioni</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
@@ -680,8 +738,6 @@ $isEdit = ($worksheet_id > 0);
|
|||||||
<td><?= h($r['required_density'] ?? '-') ?></td>
|
<td><?= h($r['required_density'] ?? '-') ?></td>
|
||||||
<td><?= h($r['required_hardness_shore_a'] ?? '-') ?></td>
|
<td><?= h($r['required_hardness_shore_a'] ?? '-') ?></td>
|
||||||
<td><?= h($r['lubrication_type'] ?? '-') ?></td>
|
<td><?= h($r['lubrication_type'] ?? '-') ?></td>
|
||||||
<td><?= h($r['requested_package_code'] ?? '-') ?></td>
|
|
||||||
<td><?= h($r['meters_per_package'] ?? '-') ?></td>
|
|
||||||
<td class="text-nowrap">
|
<td class="text-nowrap">
|
||||||
<button class="btn btn-sm btn-outline-primary edit-mix"
|
<button class="btn btn-sm btn-outline-primary edit-mix"
|
||||||
data-row='<?= h(json_encode($r, JSON_UNESCAPED_UNICODE)) ?>'>
|
data-row='<?= h(json_encode($r, JSON_UNESCAPED_UNICODE)) ?>'>
|
||||||
@@ -735,7 +791,6 @@ $isEdit = ($worksheet_id > 0);
|
|||||||
|
|
||||||
<input type="hidden" name="mix_position" id="mix_position" value="">
|
<input type="hidden" name="mix_position" id="mix_position" value="">
|
||||||
|
|
||||||
|
|
||||||
<div class="col-md-4">
|
<div class="col-md-4">
|
||||||
<label class="form-label fw-semibold">Peso metro mescola (g/m)</label>
|
<label class="form-label fw-semibold">Peso metro mescola (g/m)</label>
|
||||||
<input type="number" step="0.01" class="form-control" name="mix_weight_g_m" id="mix_weight_g_m">
|
<input type="number" step="0.01" class="form-control" name="mix_weight_g_m" id="mix_weight_g_m">
|
||||||
@@ -756,7 +811,6 @@ $isEdit = ($worksheet_id > 0);
|
|||||||
<select class="form-select" name="lubrication_type" id="lubrication_type">
|
<select class="form-select" name="lubrication_type" id="lubrication_type">
|
||||||
<?= ws_options($lookup['lubrication_type'] ?? [], '', $lookupDefault['lubrication_type'] ?? '') ?>
|
<?= ws_options($lookup['lubrication_type'] ?? [], '', $lookupDefault['lubrication_type'] ?? '') ?>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-8">
|
<div class="col-md-8">
|
||||||
@@ -764,29 +818,6 @@ $isEdit = ($worksheet_id > 0);
|
|||||||
<input type="text" class="form-control" name="lubrication_notes" id="lubrication_notes">
|
<input type="text" class="form-control" name="lubrication_notes" id="lubrication_notes">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col-md-4">
|
|
||||||
<label class="form-label fw-semibold">Codice confezione</label>
|
|
||||||
<select class="form-select" name="requested_package_code" id="requested_package_code">
|
|
||||||
<?= ws_options($lookup['requested_package_code'] ?? [], '', $lookupDefault['requested_package_code'] ?? '') ?>
|
|
||||||
</select>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-md-4">
|
|
||||||
<label class="form-label fw-semibold">Metri per confezione</label>
|
|
||||||
<input type="number" class="form-control" name="meters_per_package" id="meters_per_package">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-md-4">
|
|
||||||
<label class="form-label fw-semibold">Tolleranza metri/confezione</label>
|
|
||||||
<input type="text" class="form-control" name="meters_per_package_tolerance" id="meters_per_package_tolerance" placeholder="es. +/- 4m">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-12">
|
|
||||||
<label class="form-label fw-semibold">Note metri/confezione</label>
|
|
||||||
<input type="text" class="form-control" name="meters_per_package_notes" id="meters_per_package_notes">
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="col-12 text-center mt-2">
|
<div class="col-12 text-center mt-2">
|
||||||
<button type="submit" class="btn btn-add">💾 Salva Mescola</button>
|
<button type="submit" class="btn btn-add">💾 Salva Mescola</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -801,7 +832,6 @@ $isEdit = ($worksheet_id > 0);
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
|
|
||||||
const wsIdInput = $('#wsId');
|
const wsIdInput = $('#wsId');
|
||||||
const btnAddMix = $('#btnAddMix');
|
const btnAddMix = $('#btnAddMix');
|
||||||
|
|
||||||
@@ -826,7 +856,6 @@ $isEdit = ($worksheet_id > 0);
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
function enableMixButtonIfSaved() {
|
function enableMixButtonIfSaved() {
|
||||||
const id = parseInt(wsIdInput.val() || '0', 10);
|
const id = parseInt(wsIdInput.val() || '0', 10);
|
||||||
if (id > 0) {
|
if (id > 0) {
|
||||||
@@ -864,8 +893,6 @@ $isEdit = ($worksheet_id > 0);
|
|||||||
})
|
})
|
||||||
.then(async (r) => {
|
.then(async (r) => {
|
||||||
const text = await r.text();
|
const text = await r.text();
|
||||||
|
|
||||||
// Debug: if server returns warnings/HTML, you'll see it in console
|
|
||||||
try {
|
try {
|
||||||
return JSON.parse(text);
|
return JSON.parse(text);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
@@ -886,13 +913,11 @@ $isEdit = ($worksheet_id > 0);
|
|||||||
wsIdInput.val(data.id);
|
wsIdInput.val(data.id);
|
||||||
enableMixButtonIfSaved();
|
enableMixButtonIfSaved();
|
||||||
|
|
||||||
// If new, update URL to edit mode
|
|
||||||
if (!window.location.search.includes('id=')) {
|
if (!window.location.search.includes('id=')) {
|
||||||
const newUrl = 'manage-worksheet.php?id=' + data.id;
|
const newUrl = 'manage-worksheet.php?id=' + data.id;
|
||||||
window.history.replaceState({}, '', newUrl);
|
window.history.replaceState({}, '', newUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ✅ What you want: confirm + stay on page + open modal if user wants
|
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
icon: 'success',
|
icon: 'success',
|
||||||
title: 'Testata salvata',
|
title: 'Testata salvata',
|
||||||
@@ -916,7 +941,6 @@ $isEdit = ($worksheet_id > 0);
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
// Prepare modal for add
|
// Prepare modal for add
|
||||||
$('#mixModal').on('show.bs.modal', function() {
|
$('#mixModal').on('show.bs.modal', function() {
|
||||||
const wsId = parseInt(wsIdInput.val() || '0', 10);
|
const wsId = parseInt(wsIdInput.val() || '0', 10);
|
||||||
@@ -929,12 +953,12 @@ $isEdit = ($worksheet_id > 0);
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reset for add by default
|
|
||||||
$('#mixModalTitle').text('Aggiungi Mescola');
|
$('#mixModalTitle').text('Aggiungi Mescola');
|
||||||
$('#mixForm')[0].reset();
|
$('#mixForm')[0].reset();
|
||||||
$('#mixRowId').val('0');
|
$('#mixRowId').val('0');
|
||||||
$('#mixWorksheetId').val(wsId);
|
$('#mixWorksheetId').val(wsId);
|
||||||
$('#idmescola').prop('disabled', false);
|
$('#idmescola').prop('disabled', false).val('').trigger('change');
|
||||||
|
$('#lubrication_type').val('');
|
||||||
});
|
});
|
||||||
|
|
||||||
// Edit mix row
|
// Edit mix row
|
||||||
@@ -942,32 +966,21 @@ $isEdit = ($worksheet_id > 0);
|
|||||||
let row = $(this).attr('data-row');
|
let row = $(this).attr('data-row');
|
||||||
row = JSON.parse(row);
|
row = JSON.parse(row);
|
||||||
|
|
||||||
// Titolo modale
|
|
||||||
$('#mixModalTitle').text('Modifica Mescola');
|
$('#mixModalTitle').text('Modifica Mescola');
|
||||||
|
|
||||||
// NON resettare in "add"
|
|
||||||
$('#mixForm')[0].reset();
|
$('#mixForm')[0].reset();
|
||||||
|
|
||||||
// Set id riga e worksheet
|
|
||||||
$('#mixRowId').val(row.id);
|
$('#mixRowId').val(row.id);
|
||||||
$('#mixWorksheetId').val(row.worksheet_id);
|
$('#mixWorksheetId').val(row.worksheet_id);
|
||||||
|
|
||||||
// Mescola (se usi select2 devi triggerare change)
|
|
||||||
$('#idmescola').prop('disabled', false);
|
$('#idmescola').prop('disabled', false);
|
||||||
$('#idmescola').val(row.idmescola).trigger('change');
|
$('#idmescola').val(row.idmescola).trigger('change');
|
||||||
|
|
||||||
// Campi
|
|
||||||
$('#mix_weight_g_m').val(row.mix_weight_g_m ?? '');
|
$('#mix_weight_g_m').val(row.mix_weight_g_m ?? '');
|
||||||
$('#required_density').val(row.required_density ?? '');
|
$('#required_density').val(row.required_density ?? '');
|
||||||
$('#required_hardness_shore_a').val(row.required_hardness_shore_a ?? '');
|
$('#required_hardness_shore_a').val(row.required_hardness_shore_a ?? '');
|
||||||
$('#lubrication_type').val(row.lubrication_type ?? '');
|
$('#lubrication_type').val(row.lubrication_type ?? '');
|
||||||
$('#lubrication_notes').val(row.lubrication_notes ?? '');
|
$('#lubrication_notes').val(row.lubrication_notes ?? '');
|
||||||
$('#requested_package_code').val(row.requested_package_code ?? '');
|
|
||||||
$('#meters_per_package').val(row.meters_per_package ?? '');
|
|
||||||
$('#meters_per_package_tolerance').val(row.meters_per_package_tolerance ?? '');
|
|
||||||
$('#meters_per_package_notes').val(row.meters_per_package_notes ?? '');
|
|
||||||
|
|
||||||
// Apri modale
|
|
||||||
const modal = new bootstrap.Modal(document.getElementById('mixModal'));
|
const modal = new bootstrap.Modal(document.getElementById('mixModal'));
|
||||||
modal.show();
|
modal.show();
|
||||||
});
|
});
|
||||||
@@ -988,11 +1001,10 @@ $isEdit = ($worksheet_id > 0);
|
|||||||
.then(data => {
|
.then(data => {
|
||||||
if (data.success) {
|
if (data.success) {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
icon: 'success',
|
icon: 'success',
|
||||||
title: 'Salvata!',
|
title: 'Salvata!',
|
||||||
timer: 800
|
timer: 800
|
||||||
})
|
}).then(() => location.reload());
|
||||||
.then(() => location.reload());
|
|
||||||
} else {
|
} else {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
icon: 'error',
|
icon: 'error',
|
||||||
@@ -1029,11 +1041,10 @@ $isEdit = ($worksheet_id > 0);
|
|||||||
.then(data => {
|
.then(data => {
|
||||||
if (data.success) {
|
if (data.success) {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
icon: 'success',
|
icon: 'success',
|
||||||
title: 'Eliminata!',
|
title: 'Eliminata!',
|
||||||
timer: 800
|
timer: 800
|
||||||
})
|
}).then(() => location.reload());
|
||||||
.then(() => location.reload());
|
|
||||||
} else {
|
} else {
|
||||||
Swal.fire({
|
Swal.fire({
|
||||||
icon: 'error',
|
icon: 'error',
|
||||||
@@ -1044,7 +1055,6 @@ $isEdit = ($worksheet_id > 0);
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
Reference in New Issue
Block a user