« Back to History
va_receive_entry.php
|
20260723_000646.php
Initial Domain Snapshot
Copy Code
<?php require_once __DIR__ . '/modules/auth/page_acl.php'; $ctx = page_require_access('va_receive_entry'); $pdo = $ctx['pdo']; $company_id = (int)$ctx['company_id']; require_once __DIR__ . '/partials/header.php'; $msg = ''; $error = ''; $edit_id = (int)($_GET['edit'] ?? 0); $edit = null; $edit_party = ''; $edit_pending = 0; $edit_challan = ''; // Sticky Date & Filter Logic $selected_date = $_POST['receive_date'] ?? $_GET['last_date'] ?? date('Y-m-d'); $from_date = $_GET['from_date'] ?? date('Y-m-01'); $to_date = $_GET['to_date'] ?? date('Y-m-d'); /* --- 1. EDIT MODE --- */ if($edit_id){ $q = $pdo->prepare("SELECT * FROM va_receive_entry WHERE id=:id AND company_id=:cid"); $q->execute([':id'=>$edit_id, ':cid'=>$company_id]); $edit = $q->fetch(PDO::FETCH_ASSOC); if($edit){ $selected_date = $edit['receive_date']; $edit_challan = $edit['challan_no']; $current_fy = $edit['financial_year']; // Get total sent for this challan $s = $pdo->prepare("SELECT SUM(pcs) as ts, MAX(party_name) as party FROM va_send_entry WHERE challan_no=:ch AND company_id=:cid AND financial_year=:fy"); $s->execute([':ch'=>$edit_challan, ':cid'=>$company_id, ':fy'=>$current_fy]); $sd = $s->fetch(PDO::FETCH_ASSOC); $r = $pdo->prepare("SELECT SUM(total_pcs) FROM va_receive_entry WHERE challan_no=:ch AND company_id=:cid AND financial_year=:fy AND id != :eid"); $r->execute([':ch'=>$edit_challan, ':cid'=>$company_id, ':fy'=>$current_fy, ':eid'=>$edit_id]); $edit_party = $sd['party'] ?? ''; $edit_pending = (int)($sd['ts'] ?? 0) - (int)$r->fetchColumn(); } } /* --- 2. SUBMIT LOGIC --- */ if($_SERVER['REQUEST_METHOD'] === 'POST'){ try { $challan_no = trim($_POST['challan_no']); $edit_id = (int)($_POST['edit_id'] ?? 0); $r_date = $_POST['receive_date']; $total_in = (int)$_POST['fresh'] + (int)$_POST['second'] + (int)$_POST['modeling']; // SMART LOOKUP: Find the most recent 'Send' entry for this challan $qs = $pdo->prepare("SELECT party_name, financial_year FROM va_send_entry WHERE challan_no=:ch AND company_id=:cid ORDER BY financial_year DESC, id DESC LIMIT 1"); $qs->execute([':ch'=>$challan_no, ':cid'=>$company_id]); $sd = $qs->fetch(PDO::FETCH_ASSOC); if(!$sd) throw new Exception("Challan number $challan_no not found in system!"); $party_name = $sd['party_name']; $fy = $sd['financial_year']; // Use the FY from the Send Entry automatically $pdo->beginTransaction(); $params = [ ':dt'=>$r_date, ':it'=>(int)$_POST['item_id'], ':f'=>(int)$_POST['fresh'], ':s'=>(int)$_POST['second'], ':m'=>(int)$_POST['modeling'], ':tp'=>$total_in, ':rm'=>$_POST['remark'], ':ch'=>$challan_no, ':fy'=>$fy ]; if($edit_id){ $sql = "UPDATE va_receive_entry SET receive_date=:dt, financial_year=:fy, item_name=:it, fresh=:f, second=:s, modeling=:m, total_pcs=:tp, remark=:rm, challan_no=:ch WHERE id=:id AND company_id=:cid"; $params[':id'] = $edit_id; $params[':cid'] = $company_id; } else { $sql = "INSERT INTO va_receive_entry (company_id, challan_no, financial_year, receive_date, party_name, item_name, fresh, second, modeling, total_pcs, remark) VALUES (:cid, :ch, :fy, :dt, :p, :it, :f, :s, :m, :tp, :rm)"; $params[':cid'] = $company_id; $params[':p'] = $party_name; } $pdo->prepare($sql)->execute($params); $pdo->commit(); require_once __DIR__ . '/helpers/activity_helper.php'; log_activity([ 'activity_type' => 'entry', 'module_name' => 'va_receive_entry', 'action_name' => $edit_id ? 'update_save' : 'add_save', 'activity_note' => "Challan: $challan_no, Party: $party_name, Item: {$_POST['item_id']}, Fresh: {$_POST['fresh']}, Second: {$_POST['second']}, Modeling: {$_POST['modeling']}", 'reference_id' => $edit_id ? $edit_id : null, ]); echo "<script>window.location.href='va_receive_entry.php?msg=Saved&last_date=$r_date&from_date=$from_date&to_date=$to_date';</script>"; exit; } catch(Exception $e){ if($pdo->inTransaction()) $pdo->rollBack(); $error = $e->getMessage(); } } /* --- 3. FETCH LIST --- */ $rows = $pdo->prepare("SELECT r.*, i.item_name as itm FROM va_receive_entry r LEFT JOIN item_master i ON i.id=r.item_name WHERE r.company_id=:cid AND r.receive_date BETWEEN :f AND :t ORDER BY r.id DESC"); $rows->execute([':cid'=>$company_id, ':f'=>$from_date, ':t'=>$to_date]); $rows = $rows->fetchAll(); $items = $pdo->query("SELECT id, item_name FROM item_master WHERE company_id=$company_id AND is_active=1")->fetchAll(); ?> <div class="container mt-4"> <div class="card p-3 mb-3 border-0 shadow-sm bg-light"> <form method="get" class="row g-2 align-items-end"> <div class="col-md-3"><label class="small fw-bold">From Date</label><input type="date" name="from_date" class="form-control" value="<?= $from_date ?>"></div> <div class="col-md-3"><label class="small fw-bold">To Date</label><input type="date" name="to_date" class="form-control" value="<?= $to_date ?>"></div> <div class="col-md-2"><button type="submit" class="btn btn-dark w-100">Filter List</button></div> <div class="col-md-2"><a href="va_receive_entry.php" class="btn btn-outline-secondary w-100">Reset</a></div> </form> </div> <div class="card p-3 shadow-sm border-0"> <h4 class="text-primary mb-4 fw-bold"><?= $edit_id ? 'Edit' : 'New' ?> VA Receive Entry</h4> <?php if($error): ?><div class="alert alert-danger"><?= $error ?></div><?php endif; ?> <form method="post" class="row g-3"> <input type="hidden" name="edit_id" value="<?= $edit_id ?>"> <div class="col-md-2"><label>Date</label><input type="date" name="receive_date" id="receive_date" class="form-control" value="<?= $selected_date ?>"></div> <div class="col-md-3"><label>Challan No.</label><input type="text" name="challan_no" id="challan_no" class="form-control fw-bold border-primary" value="<?= $edit_challan ?>" required autocomplete="off"></div> <div class="col-md-3"><label>Party Name</label><input type="text" id="party" class="form-control bg-light" value="<?= $edit_party ?>" readonly></div> <div class="col-md-2"><label class="text-danger fw-bold">Pending</label><input type="text" id="pending" class="form-control bg-warning-subtle fw-bold text-center" value="<?= $edit_pending ?>" readonly></div> <div class="col-md-4 mt-3"><label>Item</label> <select name="item_id" class="form-select" required><option value="">-- Select Item --</option> <?php foreach($items as $it): ?><option value="<?= $it['id'] ?>" <?= ($edit && $edit['item_name']==$it['id'])?'selected':'' ?>><?= $it['item_name'] ?></option><?php endforeach; ?> </select> </div> <div class="col-md-2 mt-3"><label>Fresh</label><input type="number" name="fresh" class="form-control" value="<?= $edit['fresh']??0 ?>"></div> <div class="col-md-2 mt-3"><label>Second</label><input type="number" name="second" class="form-control" value="<?= $edit['second']??0 ?>"></div> <div class="col-md-2 mt-3"><label>Modeling</label><input type="number" name="modeling" class="form-control" value="<?= $edit['modeling']??0 ?>"></div> <div class="col-md-2 mt-3"><label> </label><button type="submit" class="btn btn-primary w-100 fw-bold">SAVE ENTRY</button></div> <div class="col-md-12"><label>Remark</label><input type="text" name="remark" class="form-control" value="<?= $edit['remark']??'' ?>"></div> </form> <div class="table-responsive mt-5"> <table class="table table-bordered align-middle"> <thead class="table-dark"> <tr><th>Date</th><th>Challan</th><th>Party Name</th><th>Item</th><th>FY</th><th>Total Pcs</th><th>Action</th></tr> </thead> <tbody> <?php foreach($rows as $r): ?> <tr> <td><?= date('d-m-Y', strtotime($r['receive_date'])) ?></td> <td class="fw-bold text-primary"><?= $r['challan_no'] ?></td> <td><?= $r['party_name'] ?></td> <td><?= $r['itm'] ?></td> <td class="small text-muted"><?= $r['financial_year'] ?></td> <td class="text-center fw-bold"><?= $r['total_pcs'] ?></td> <td class="text-center"><a href="?edit=<?= $r['id'] ?>&from_date=<?= $from_date ?>&to_date=<?= $to_date ?>" class="btn btn-sm btn-outline-primary">Edit</a></td> </tr> <?php endforeach; ?> </tbody> </table> </div> </div> </div> <script> document.getElementById('challan_no').addEventListener('change', function() { let challan = this.value.trim(); if (!challan) return; // AJAX call now handles the "Smart FY" logic internally fetch('va_fetch_challan.php?challan=' + encodeURIComponent(challan)) .then(response => response.json()) .then(res => { if (res.status === 'ok') { document.getElementById('party').value = res.party; document.getElementById('pending').value = res.pending; } else { alert("Challan Not Found!"); document.getElementById('party').value = ''; document.getElementById('pending').value = '0'; } }); }); </script>