« Back to History
beam_entry.php
|
20260721_154032.php
Initial Bulk Import
Copy Code
<?php /* ====================================================================== FILE: /erp/beam_entry.php PURPOSE: Beam Entry (Standard ERP Form Layout) RULES: - Uses global main.css only - Uses reusable .form-card + .form-cols-4 - No page-specific CSS ====================================================================== */ error_reporting(E_ALL); ini_set('display_errors', 1); /* ---------- DB ---------- */ $pdo = $GLOBALS['pdo'] ?? null; if (!$pdo) require __DIR__ . '/core/db.php'; /* ---------- AUTH ---------- */ require __DIR__ . '/modules/auth/auth.php'; require_login(); $u = auth_user(); $COMPANY_ID = (int)$u['company_id']; $USER_ID = (int)$u['id']; $ROLE = strtolower($u['role'] ?? ''); /* ---------- HELPERS ---------- */ require_once __DIR__ . '/helpers/activity_helper.php'; function h($s){ return htmlspecialchars((string)$s, ENT_QUOTES, 'UTF-8'); } /* ---------- WARPER LIST ---------- */ $warpers = []; $st = $pdo->prepare(" SELECT id, name FROM company_employee_master WHERE company_id = ? AND is_active = 1 AND department_id = 22 ORDER BY name "); $st->execute([$COMPANY_ID]); $warpers = $st->fetchAll(PDO::FETCH_ASSOC); /* ---------- QUALITY ---------- */ $qualities = []; $st = $pdo->prepare(" SELECT id, name, COALESCE(pattern,'') AS tar FROM beam_qualities WHERE company_id = ? ORDER BY name "); $st->execute([$COMPANY_ID]); $qualities = $st->fetchAll(PDO::FETCH_ASSOC); /* ---------- SAVE ---------- */ $msg = ''; $err = ''; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $entry_date = $_POST['entry_date'] ?? ''; $employee_id = (int)($_POST['employee_id'] ?? 0); $beam_no = trim($_POST['beam_no'] ?? ''); $taka = (int)($_POST['taka'] ?? 0); $quality_id = (int)($_POST['quality_id'] ?? 0); $meter = $taka * 120; $tar = trim($_POST['tar'] ?? ''); if (!$entry_date || !$employee_id || !$beam_no || !$quality_id) { $err = 'All required fields are mandatory.'; } else { try { $stmt = $pdo->prepare(" INSERT INTO beam_entry (company_id, employee_id, entry_date, beam_no, taka, meter, tar, quality_id, created_by) VALUES (?,?,?,?,?,?,?,?,?) "); $stmt->execute([ $COMPANY_ID, $employee_id, $entry_date, $beam_no, $taka, $meter, $tar, $quality_id, $USER_ID ]); activity_create('beam', 'beam_entry_create', (int)$pdo->lastInsertId(), 'Created beam entry'); $msg = 'Beam entry saved successfully.'; } catch (Exception $e) { $err = 'Save failed. Beam No may already exist.'; } } } /* ---------- HEADER ---------- */ require __DIR__ . '/partials/header.php'; ?> <div class="wrap"> <h2>Beam Entry</h2> <?php if ($msg): ?> <div class="notice notice--success"><?= h($msg) ?></div> <?php endif; ?> <?php if ($err): ?> <div class="notice notice--error"><?= h($err) ?></div> <?php endif; ?> <!-- ================= FORM CARD ================= --> <div class="form-card"> <form method="post" class="form-grid form-cols-4" autocomplete="off"> <div class="form-group"> <label>Entry Date</label> <input type="date" name="entry_date" class="input-text" value="<?= h(date('Y-m-d')) ?>" required> </div> <div class="form-group"> <label>Warper</label> <select name="employee_id" class="input-select" required> <option value="">Select…</option> <?php foreach ($warpers as $w): ?> <option value="<?= (int)$w['id'] ?>"><?= h($w['name']) ?></option> <?php endforeach; ?> </select> </div> <div class="form-group"> <label>Beam No</label> <input type="text" name="beam_no" class="input-text" required> </div> <div class="form-group"> <label>Taka</label> <input type="number" name="taka" class="input-text" min="0" required> </div> <div class="form-group"> <label>Quality</label> <select name="quality_id" id="quality" class="input-select" required> <option value="">Select…</option> <?php foreach ($qualities as $q): ?> <option value="<?= (int)$q['id'] ?>" data-tar="<?= h($q['tar']) ?>"> <?= h($q['name']) ?> </option> <?php endforeach; ?> </select> </div> <div class="form-group"> <label>Meter</label> <input type="number" class="input-text" id="meter" readonly> </div> <div class="form-group"> <label>Tar</label> <input type="text" name="tar" id="tar" class="input-text"> </div> <!-- BUTTON ROW --> <div class="form-group form-group--full"> <button class="btn btn--primary" type="submit">Save</button> <button class="btn btn--muted" type="reset">Reset</button> </div> </form> </div> <!-- ================= /FORM CARD ================= --> </div> <?php require __DIR__ . '/partials/footer.php'; ?> <script> /* meter auto-calc */ const taka = document.querySelector('[name="taka"]'); const meter = document.getElementById('meter'); if (taka && meter) { taka.addEventListener('input', () => { meter.value = taka.value ? (parseInt(taka.value) * 120) : ''; }); } /* tar auto-fill */ const quality = document.getElementById('quality'); const tar = document.getElementById('tar'); if (quality && tar) { quality.addEventListener('change', () => { tar.value = quality.selectedOptions[0]?.dataset?.tar || ''; }); } </script>