« Back to History
karigar_bank_data.php
|
20260721_154032.php
Initial Bulk Import
Copy Code
<?php /* ============================================================================= File: karigar_bank_data.php Updated: Directly using loom_karigar_master for Bank Details ============================================================================ */ require_once __DIR__ . '/modules/auth/page_acl.php'; $ctx = page_require_access('karigar_bank_data'); $company_id = (int)($ctx['company_id'] ?? 0); $pdo = $ctx['pdo'] ?? null; if (!($pdo instanceof PDO)) { require_once __DIR__ . '/core/db.php'; } function h($s){ return htmlspecialchars((string)$s, ENT_QUOTES, 'UTF-8'); } function archive_deleted_bank_ac(PDO $pdo, int $company_id, string $acno, string $refTable, int $refId): void { $acno = trim($acno); if ($acno === '') return; $stmt = $pdo->prepare("INSERT INTO deleted_bank_ac (company_id, bank_ac_no, ref_table, ref_id, employee_id, department_id, deleted_at) VALUES (?, ?, ?, ?, NULL, NULL, NOW())"); $stmt->execute([$company_id, $acno, $refTable, $refId]); } /* ================= EDIT FETCH ================= */ $editData = null; $edit_id = (int)($_GET['edit_id'] ?? 0); if ($edit_id > 0) { // Fetch directly from loom_karigar_master $stmt = $pdo->prepare(" SELECT id, karigar_name, entry_name, beneficiary_name, beneficiary_ac_number, ifsc_code FROM loom_karigar_master WHERE id=? AND company_id=? "); $stmt->execute([$edit_id, $company_id]); $editData = $stmt->fetch(PDO::FETCH_ASSOC); } /* ================= SAVE / DELETE (UPDATE MASTER) ================= */ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $op = $_GET['op'] ?? 'save'; $id = (int)($_POST['karigar_id'] ?? 0); if ($id <= 0) { die('Invalid Karigar'); } $oldStmt = $pdo->prepare("SELECT entry_name, beneficiary_name, beneficiary_ac_number, ifsc_code FROM loom_karigar_master WHERE id=? AND company_id=?"); $oldStmt->execute([$id, $company_id]); $old = $oldStmt->fetch(PDO::FETCH_ASSOC); if (!$old) { die('Karigar not found'); } if ($op === 'delete') { $oldAcNo = trim((string)($old['beneficiary_ac_number'] ?? '')); if ($oldAcNo !== '') { archive_deleted_bank_ac($pdo, $company_id, $oldAcNo, 'loom_karigar_master', $id); } $stmt = $pdo->prepare(" UPDATE loom_karigar_master SET entry_name='', beneficiary_name='', beneficiary_ac_number='', ifsc_code='' WHERE id=? AND company_id=? "); $stmt->execute([$id, $company_id]); header("Location: karigar_bank_data.php?deleted=1"); exit; } $entry = trim($_POST['entry_name'] ?? ''); $bname = trim($_POST['beneficiary_name'] ?? ''); $acno = trim($_POST['beneficiary_ac_number'] ?? ''); $ifsc = trim($_POST['ifsc_code'] ?? ''); if ($bname === '' || $acno === '' || $ifsc === '') { die('Required fields missing or Invalid Karigar'); } if (!preg_match('/^[0-9]+$/', $acno)) { die('Account number should contain digits only'); } if (preg_match('/[0-9]/', $bname)) { die('Beneficiary name cannot contain numbers'); } $oldAcNo = trim((string)($old['beneficiary_ac_number'] ?? '')); if ($oldAcNo !== '' && $oldAcNo !== $acno) { archive_deleted_bank_ac($pdo, $company_id, $oldAcNo, 'loom_karigar_master', $id); } $stmt = $pdo->prepare(" UPDATE loom_karigar_master SET entry_name=?, beneficiary_name=?, beneficiary_ac_number=?, ifsc_code=? WHERE id=? AND company_id=? "); $stmt->execute([$entry, $bname, $acno, $ifsc, $id, $company_id]); header("Location: karigar_bank_data.php?saved=1"); exit; } /* ================= LIST ALL KARIGARS WITH BANK DATA ================= */ $list = $pdo->prepare(" SELECT id, karigar_name, entry_name, beneficiary_name, beneficiary_ac_number, ifsc_code FROM loom_karigar_master WHERE company_id=? ORDER BY karigar_name ASC "); $list->execute([$company_id]); $rows = $list->fetchAll(PDO::FETCH_ASSOC); require __DIR__ . '/partials/header.php'; ?> <div class="container-fluid py-4"> <h4 class="fw-bold text-center mb-4">Manage Karigar Bank Details</h4> <?php if(isset($_GET['saved'])): ?> <div class="alert alert-success">Bank details updated successfully!</div> <?php endif; ?> <?php if(isset($_GET['deleted'])): ?> <div class="alert alert-warning">Old bank details deleted and moved to deleted account history.</div> <?php endif; ?> <div class="card mb-4 shadow-sm border-0"> <div class="card-header bg-primary text-white"> <h6 class="mb-0"><?= $editData ? 'Edit Bank Details for: '.h($editData['karigar_name']) : 'Update Bank Info' ?></h6> </div> <div class="card-body"> <form method="post" action="karigar_bank_data.php?op=save"> <input type="hidden" name="karigar_id" id="hidden_karigar_id" value="<?= (int)($editData['id'] ?? 0) ?>"> <div class="row g-3"> <?php if(!$editData): ?> <div class="col-md-3"> <label class="form-label">Select Karigar</label> <select name="karigar_id" id="karigar_select" class="form-select" required> <option value="">-- Select Karigar --</option> <?php foreach($rows as $k): ?> <option value="<?= $k['id'] ?>" data-entry="<?= h($k['entry_name']) ?>" data-bene="<?= h($k['beneficiary_name']) ?>" data-ac="<?= h($k['beneficiary_ac_number']) ?>" data-ifsc="<?= h($k['ifsc_code']) ?>"> <?= h($k['karigar_name']) ?> </option> <?php endforeach; ?> </select> </div> <?php endif; ?> <div class="col-md-3"> <label class="form-label">Entry Name</label> <input type="text" name="entry_name" id="entry_name" class="form-control" value="<?= h($editData['entry_name'] ?? '') ?>"> </div> <div class="col-md-3"> <label class="form-label">Beneficiary Name</label> <input type="text" name="beneficiary_name" id="beneficiary_name" class="form-control" value="<?= h($editData['beneficiary_name'] ?? '') ?>" pattern="^[A-Za-z .]+$" title="Beneficiary name should contain letters only" required> </div> <div class="col-md-3"> <label class="form-label">Account Number</label> <input type="text" name="beneficiary_ac_number" id="beneficiary_ac_number" class="form-control" value="<?= h($editData['beneficiary_ac_number'] ?? '') ?>" inputmode="numeric" pattern="^[0-9]+$" title="Account number should contain digits only" required> </div> <div class="col-md-3"> <label class="form-label">IFSC Code</label> <input type="text" name="ifsc_code" id="ifsc_code" class="form-control" value="<?= h($editData['ifsc_code'] ?? '') ?>" required> </div> <div class="col-12 text-end"> <?php if($editData): ?> <a href="karigar_bank_data.php" class="btn btn-secondary">Cancel</a> <?php endif; ?> <button class="btn btn-primary px-4"> <?= $editData ? 'Update Details' : 'Save Details' ?> </button> </div> </div> </form> </div> </div> <div class="card shadow-sm border-0"> <div class="card-body p-0"> <div class="table-responsive"> <table class="table table-hover mb-0"> <thead class="table-dark"> <tr> <th>Karigar Name</th> <th>Entry Name</th> <th>Beneficiary</th> <th>A/C Number</th> <th>IFSC</th> <th class="text-center">Action</th> </tr> </thead> <tbody> <?php foreach($rows as $r): ?> <tr> <td class="fw-bold"><?= h($r['karigar_name']) ?></td> <td><?= h($r['entry_name']) ?></td> <td><?= h($r['beneficiary_name']) ?></td> <td><code><?= h($r['beneficiary_ac_number']) ?></code></td> <td><?= h($r['ifsc_code']) ?></td> <td class="text-center"> <div class="d-inline-flex gap-2"> <a href="karigar_bank_data.php?edit_id=<?= $r['id'] ?>" class="btn btn-sm btn-outline-warning">Edit</a> <?php if(trim((string)$r['beneficiary_ac_number']) !== ''): ?> <form method="post" action="karigar_bank_data.php?op=delete" onsubmit="return confirm('Delete bank details? Old account will be moved to deleted_bank_ac history.');" class="d-inline"> <input type="hidden" name="karigar_id" value="<?= (int)$r['id'] ?>"> <button type="submit" class="btn btn-sm btn-outline-danger">Delete</button> </form> <?php endif; ?> </div> </td> </tr> <?php endforeach; ?> </tbody> </table> </div> </div> </div> </div> <script> // Jab user dropdown se karigar select karega, bank info auto-fill ho jayegi (Sirf Save mode mein) const kSelect = document.getElementById('karigar_select'); if(kSelect) { kSelect.addEventListener('change', function () { const opt = this.options[this.selectedIndex]; if(!opt.value) return; document.getElementById('entry_name').value = opt.getAttribute('data-entry') || ''; document.getElementById('beneficiary_name').value = opt.getAttribute('data-bene') || ''; document.getElementById('beneficiary_ac_number').value = opt.getAttribute('data-ac') || ''; document.getElementById('ifsc_code').value = opt.getAttribute('data-ifsc') || ''; }); } const acInput = document.getElementById('beneficiary_ac_number'); if (acInput) { acInput.addEventListener('input', function () { this.value = this.value.replace(/\D/g, ''); }); } const beneInput = document.getElementById('beneficiary_name'); if (beneInput) { beneInput.addEventListener('input', function () { this.value = this.value.replace(/[0-9]/g, ''); }); } </script> <?php require __DIR__ . '/partials/footer.php'; ?>