« Back to History
party_ac_add.php
|
20260721_154033.php
Initial Bulk Import
Copy Code
<?php /* ============================================================ PARTY ACCOUNT MANAGE (BOOTSTRAP 5) ============================================================ */ require_once __DIR__ . '/modules/auth/page_acl.php'; require_once __DIR__ . '/helpers/activity_helper.php'; $ctx = page_require_access('party_ac_add'); $company_id = (int)($ctx['company_id'] ?? 0); $pdo = $ctx['pdo'] ?? null; $u = $ctx['user'] ?? null; if (!$pdo || !$company_id) { die('Invalid context'); } /* CSRF */ if (empty($_SESSION['csrf_token'])) { $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); } $errors = []; $success = ''; /* ===================== SUBMIT (SAVE / UPDATE) ===================== */ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['save_account'])) { if (!hash_equals($_SESSION['csrf_token'], $_POST['csrf_token'] ?? '')) { $errors[] = 'Invalid CSRF token'; } $edit_id = (int)($_POST['edit_id'] ?? 0); $party_name = trim($_POST['party_name'] ?? ''); $account_no = preg_replace('/\s+/', '', trim($_POST['account_no'] ?? '')); $beneficiary_name = trim($_POST['beneficiary_name'] ?? ''); $ifsc_code = strtoupper(preg_replace('/\s+/', '', trim($_POST['ifsc_code'] ?? ''))); $bank_name = trim($_POST['bank_name'] ?? ''); $branch_name = trim($_POST['branch_name'] ?? ''); if ($party_name === '') $errors[] = 'Party name required'; if ($account_no === '') $errors[] = 'Account number required'; if ($beneficiary_name === '') $errors[] = 'Beneficiary name required'; if ($ifsc_code === '') $errors[] = 'IFSC code required'; /* Duplicate check */ if (!$errors) { $chk = $pdo->prepare("SELECT id FROM party_ac_detail WHERE company_id = ? AND account_no = ? AND id != ? LIMIT 1"); $chk->execute([$company_id, $account_no, $edit_id]); if ($chk->fetch()) { $errors[] = 'This account number already exists'; } } if (!$errors) { $pdo->beginTransaction(); try { if ($edit_id > 0) { $pdo->prepare("DELETE FROM party_ac_detail WHERE id = ? AND company_id = ?") ->execute([$edit_id, $company_id]); } $stmt = $pdo->prepare(" INSERT INTO party_ac_detail (company_id, party_name, account_no, beneficiary_name, ifsc_code, bank_name, branch_name) VALUES (:cid, :party, :ac, :beneficiary, :ifsc, :bank, :branch) "); $stmt->execute([ ':cid' => $company_id, ':party' => $party_name, ':ac' => $account_no, ':beneficiary' => $beneficiary_name, ':ifsc' => $ifsc_code, ':bank' => $bank_name ?: null, ':branch' => $branch_name ?: null, ]); $insert_id = (int)$pdo->lastInsertId(); $pdo->commit(); activity_create('party', 'party_account', $insert_id ?? 0, $edit_id > 0 ? 'Party account updated' : 'Party account created'); $success = $edit_id > 0 ? 'Account updated successfully' : 'Account added successfully'; $_POST = []; } catch (Exception $e) { $pdo->rollBack(); $errors[] = 'Database error: ' . $e->getMessage(); } } } /* ===================== FETCH DATA ===================== */ $edit_data = null; if (isset($_GET['edit_id'])) { $st = $pdo->prepare("SELECT * FROM party_ac_detail WHERE id = ? AND company_id = ?"); $st->execute([(int)$_GET['edit_id'], $company_id]); $edit_data = $st->fetch(PDO::FETCH_ASSOC); } $list = $pdo->prepare("SELECT * FROM party_ac_detail WHERE company_id = ? ORDER BY id DESC"); $list->execute([$company_id]); $accounts = $list->fetchAll(PDO::FETCH_ASSOC); require_once __DIR__ . '/partials/header.php'; ?> <div class="container-fluid py-4"> <div class="row g-4"> <div class="col-md-4"> <div class="card shadow-sm border-0"> <div class="card-header bg-primary text-white py-3"> <h5 class="mb-0 fw-bold"><?= $edit_data ? 'Edit' : 'Add New' ?> Account</h5> </div> <div class="card-body p-4"> <?php if ($errors): ?> <div class="alert alert-danger py-2 small"> <ul class="mb-0"> <?php foreach ($errors as $e): ?> <li><?= htmlspecialchars($e) ?></li> <?php endforeach; ?> </ul> </div> <?php endif; ?> <?php if ($success): ?> <div class="alert alert-success py-2 small"> <?= htmlspecialchars($success) ?> </div> <?php endif; ?> <form method="post"> <input type="hidden" name="csrf_token" value="<?= htmlspecialchars($_SESSION['csrf_token']) ?>"> <input type="hidden" name="edit_id" value="<?= $edit_data['id'] ?? 0 ?>"> <div class="mb-3"> <label class="form-label small fw-bold text-muted">PARTY NAME *</label> <input type="text" name="party_name" class="form-control" value="<?= htmlspecialchars($edit_data['party_name'] ?? $_POST['party_name'] ?? '') ?>" required> </div> <div class="mb-3"> <label class="form-label small fw-bold text-muted">ACCOUNT NUMBER *</label> <input type="text" name="account_no" id="account_no" class="form-control" value="<?= htmlspecialchars($edit_data['account_no'] ?? $_POST['account_no'] ?? '') ?>" required> </div> <div class="mb-3"> <label class="form-label small fw-bold text-muted">BENEFICIARY NAME *</label> <input type="text" name="beneficiary_name" class="form-control" value="<?= htmlspecialchars($edit_data['beneficiary_name'] ?? $_POST['beneficiary_name'] ?? '') ?>" required> </div> <div class="mb-3"> <label class="form-label small fw-bold text-muted">IFSC CODE *</label> <input type="text" name="ifsc_code" id="ifsc_code" class="form-control text-uppercase" value="<?= htmlspecialchars($edit_data['ifsc_code'] ?? $_POST['ifsc_code'] ?? '') ?>" required> </div> <div class="mb-3"> <label class="form-label small fw-bold text-muted">BANK NAME</label> <input type="text" name="bank_name" class="form-control" value="<?= htmlspecialchars($edit_data['bank_name'] ?? $_POST['bank_name'] ?? '') ?>"> </div> <div class="mb-4"> <label class="form-label small fw-bold text-muted">BRANCH NAME</label> <input type="text" name="branch_name" class="form-control" value="<?= htmlspecialchars($edit_data['branch_name'] ?? $_POST['branch_name'] ?? '') ?>"> </div> <button type="submit" name="save_account" class="btn btn-primary w-100 fw-bold"> <?= $edit_data ? 'Update' : 'Save' ?> Account </button> </form> </div> </div> </div> <!-- RIGHT SIDE LIST SAME AS BEFORE --> <div class="col-md-8"> <div class="card shadow-sm border-0"> <div class="card-header bg-white py-3"> <h5 class="mb-0 fw-bold text-primary">Registered Accounts</h5> </div> <div class="table-responsive"> <table class="table table-hover align-middle mb-0"> <thead class="table-light small text-uppercase fw-bold"> <tr> <th class="ps-3">Party & Beneficiary</th> <th>Account No</th> <th>IFSC / Bank</th> <th class="text-end pe-3">Action</th> </tr> </thead> <tbody> <?php foreach ($accounts as $r): ?> <tr> <td class="ps-3"> <div class="fw-bold"><?= htmlspecialchars($r['party_name']) ?></div> <div class="small text-muted"><?= htmlspecialchars($r['beneficiary_name']) ?></div> </td> <td><code class="text-dark fw-bold"><?= htmlspecialchars($r['account_no']) ?></code></td> <td> <span class="badge bg-light text-dark border"><?= htmlspecialchars($r['ifsc_code']) ?></span> <div class="small text-muted mt-1"><?= htmlspecialchars($r['bank_name'] ?? '-') ?></div> </td> <td class="text-end pe-3"> <a href="?edit_id=<?= $r['id'] ?>" class="btn btn-sm btn-outline-primary px-3">Edit</a> </td> </tr> <?php endforeach; ?> </tbody> </table> </div> </div> </div> </div> </div> <!-- ===== SPACE AUTO REMOVE SCRIPT ===== --> <script> document.getElementById('account_no').addEventListener('input', function() { this.value = this.value.replace(/\s+/g, ''); }); document.getElementById('ifsc_code').addEventListener('input', function() { this.value = this.value.replace(/\s+/g, '').toUpperCase(); }); </script> <?php require_once __DIR__ . '/partials/footer.php'; ?>