« Back to History
employee_bank_edit.php
|
20260722_120325.php
Initial Domain Snapshot
Copy Code
<?php /* ========================================================= File: /erp/employee_bank_edit.php Purpose: Add/Update beneficiary bank details by EMPLOYEE ID Schema ensured here: employee_bank_details(company_id, employee_id, account_holder, account_no, ifsc) Scope: This page only (no global setting changes) ========================================================= */ error_reporting(E_ALL); ini_set('display_errors', 1); require __DIR__ . '/modules/auth/auth.php'; require_login(); $u = auth_user(); $company_id = (int)$u['company_id']; if (!isset($pdo) || !($pdo instanceof PDO)) { require __DIR__ . '/core/db.php'; } function h($s){ return htmlspecialchars((string)$s, ENT_QUOTES, 'UTF-8'); } function post($k,$d=''){ return isset($_POST[$k]) ? (is_string($_POST[$k])?trim($_POST[$k]):$_POST[$k]) : $d; } /* -------- Input: employee_id is REQUIRED -------- */ $employee_id = (int)($_GET['employee_id'] ?? $_POST['employee_id'] ?? 0); if ($employee_id <= 0) { http_response_code(400); exit('employee_id required'); } /* -------- Ensure target table (employee_id keyed) -------- */ $pdo->exec("CREATE TABLE IF NOT EXISTS employee_bank_details ( id BIGINT PRIMARY KEY AUTO_INCREMENT, company_id BIGINT NOT NULL, employee_id BIGINT NOT NULL, account_holder VARCHAR(120), bank_name VARCHAR(120), account_no VARCHAR(40) NOT NULL, ifsc VARCHAR(15) NOT NULL, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, UNIQUE KEY uniq_company_emp (company_id, employee_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"); /* -------- Get employee display name (prefer employees, fallback users) -------- */ $emp_name = null; try { $q = $pdo->prepare("SELECT name FROM employees WHERE id=? AND company_id=?"); $q->execute([$employee_id, $company_id]); $emp_name = $q->fetchColumn(); } catch (Throwable $e) { /* table may not exist; ignore */ } if ($emp_name === false || $emp_name === null) { // fallback to users table (if your employee ids reference users) $q = $pdo->prepare("SELECT name FROM users WHERE id=? AND company_id=?"); $q->execute([$employee_id, $company_id]); $emp_name = $q->fetchColumn(); } if (!$emp_name) { $emp_name = 'Employee #'.(int)$employee_id; } /* -------- Load existing bank row -------- */ $bank = ['account_holder'=>'', 'bank_name'=>'', 'account_no'=>'', 'ifsc'=>'']; $st = $pdo->prepare("SELECT account_holder, bank_name, account_no, ifsc FROM employee_bank_details WHERE company_id=? AND employee_id=?"); $st->execute([$company_id, $employee_id]); if ($row = $st->fetch(PDO::FETCH_ASSOC)) { $bank = $row; } /* -------- Handle POST (UPSERT by company_id + employee_id) -------- */ $msg=''; $err=''; if ($_SERVER['REQUEST_METHOD']==='POST') { $holder = post('account_holder'); $banknm = post('bank_name'); $accno = post('account_no'); $ifsc = strtoupper(post('ifsc')); if ($accno === '' || $ifsc === '') { $err = 'Account Number और IFSC दोनों required हैं.'; } else { $sql = "INSERT INTO employee_bank_details (company_id, employee_id, account_holder, bank_name, account_no, ifsc) VALUES (:cid,:eid,:h,:bn,:ac,:if) ON DUPLICATE KEY UPDATE account_holder = VALUES(account_holder), bank_name = VALUES(bank_name), account_no = VALUES(account_no), ifsc = VALUES(ifsc)"; $q = $pdo->prepare($sql); $q->execute([ ':cid'=>$company_id, ':eid'=>$employee_id, ':h'=>$holder, ':bn'=>$banknm, ':ac'=>$accno, ':if'=>$ifsc ]); $msg = 'Saved.'; $bank = ['account_holder'=>$holder, 'bank_name'=>$banknm, 'account_no'=>$accno, 'ifsc'=>$ifsc]; } } ?> <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>Bank Details • <?=h($emp_name)?></title> <meta name="viewport" content="width=device-width,initial-scale=1"> <style> body{font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial;background:#f6f7f8;margin:0;padding:24px;color:#222} .card{max-width:520px;margin:0 auto;background:#fff;border:1px solid #eee;border-radius:14px;padding:20px;box-shadow:0 6px 20px rgba(0,0,0,.06)} h3{margin:0 0 12px} label{display:block;margin:10px 0 6px;font-size:14px} input[type=text]{width:100%;padding:10px 12px;border:1px solid #ddd;border-radius:10px} .btn{margin-top:14px;appearance:none;border:none;background:#0b57d0;color:#fff;padding:10px 16px;border-radius:10px;font-weight:600;cursor:pointer} .msg{margin-top:10px;padding:8px 10px;border-radius:8px;font-size:13px} .ok{background:#ecfdf5;border:1px solid #a7f3d0;color:#065f46} .err{background:#fee2e2;border:1px solid #fecaca;color:#7f1d1d} </style> </head> <body> <div class="card"> <h3>Bank Details — <?=h($emp_name)?> (Employee ID <?= (int)$employee_id ?>)</h3> <form method="post" autocomplete="off"> <input type="hidden" name="employee_id" value="<?= (int)$employee_id ?>"> <label>Account Holder</label> <input type="text" name="account_holder" value="<?= h($bank['account_holder']) ?>"> <label>Bank Name</label> <input type="text" name="bank_name" value="<?= h($bank['bank_name']) ?>"> <label>Account Number *</label> <input type="text" name="account_no" required value="<?= h($bank['account_no']) ?>"> <label>IFSC *</label> <input type="text" name="ifsc" required value="<?= h($bank['ifsc']) ?>"> <button class="btn" type="submit">Save</button> <?php if($msg): ?><div class="msg ok"><?=h($msg)?></div><?php endif; ?> <?php if($err): ?><div class="msg err"><?=h($err)?></div><?php endif; ?> </form> </div> </body> </html>