Файловый менеджер - Редактировать - /home/d46091/invoice.ecogenix.in/update_challan.php
Назад
<?php require_once('includes/connection.php'); // Validate ID if (!isset($_GET['id']) || empty($_GET['id'])) { echo "Invalid item ID."; exit; } $id = intval($_GET['id']); $challan = null; // Fetch existing data $stmt = $conn->prepare("SELECT * FROM road_challans WHERE id = ?"); $stmt->bind_param("i", $id); $stmt->execute(); $result = $stmt->get_result(); if ($result->num_rows === 0) { echo "Record not found."; exit; } $challan = $result->fetch_assoc(); // echo '<pre>'; // print_r($challan); // die(); $stmt->close(); if ($_SERVER['REQUEST_METHOD'] == 'POST') { $updated_at = date('Y-m-d H:i:s'); // Helper function to escape and wrap string values safely function esc_str($conn, $val) { return "'" . mysqli_real_escape_string($conn, $val) . "'"; } if ($_POST['form_id'] == 'challan_update') { // Escape all string inputs $consignorName = esc_str($conn, $_POST['consignorName'] ?? ''); $consignorAddress = esc_str($conn, $_POST['consignorAddress'] ?? ''); $consignorEmail = esc_str($conn, $_POST['consignorEmail'] ?? ''); $consignorPhone = esc_str($conn, $_POST['consignorPhone'] ?? ''); $consignorPincode = esc_str($conn, $_POST['consignorPincode'] ?? ''); $consignorGst = esc_str($conn, $_POST['consignorGst'] ?? ''); $name = esc_str($conn, $_POST['name'] ?? ''); $address1 = esc_str($conn, $_POST['address1'] ?? ''); $destination = esc_str($conn, $_POST['destination'] ?? ''); $order_date = esc_str($conn, $_POST['order_date'] ?? ''); $challan_no = esc_str($conn, $_POST['challan_no'] ?? ''); $date = esc_str($conn, $_POST['date'] ?? ''); $vehicle_no = esc_str($conn, $_POST['vehicle_no'] ?? ''); $d_vehicle_date = esc_str($conn, $_POST['d_vehicle_date'] ?? ''); $description = esc_str($conn, $_POST['description'] ?? ''); $hsn = esc_str($conn, $_POST['hsn'] ?? ''); $driver_no = esc_str($conn, $_POST['driver_no'] ?? ''); $sig_datetime = esc_str($conn, $_POST['sig_datetime'] ?? ''); // Cast numeric values safely $bags = isset($_POST['bags']) ? (int)$_POST['bags'] : ''; // $quantity = isset($_POST['quantity']) ? (float)$_POST['quantity'] : ''; $sql = "UPDATE road_challans SET consignorName = $consignorName, consignorAddress = $consignorAddress, consignorEmail = $consignorEmail, consignorPhone = $consignorPhone, consignorPincode = $consignorPincode, consignorGst = $consignorGst, name = $name, address1 = $address1, destination = $destination, order_date = $order_date, challan_no = $challan_no, date = $date, vehicle_no = $vehicle_no, d_vehicle_date = $d_vehicle_date, description = $description, bags = $bags, hsn = $hsn, driver_no = $driver_no, sig_datetime = $sig_datetime, updated_at = '" . $updated_at . "' WHERE id = $id"; if (mysqli_query($conn, $sql)) { echo "<script> alert('Challan updated successfully!'); window.location.href = 'challan.php'; </script>"; } else { echo "Error updating challan: " . mysqli_error($conn); } } else if ($_POST['form_id'] == 'invoice_update') { // echo '<pre>'; // print_r($_POST); // die(); // Assuming esc_str() is a function wrapping mysqli_real_escape_string for safety // A helper function to escape and quote a value, or set NULL if empty function esc_and_quote($conn, $val) { if (isset($val) && $val !== '') { return "'" . mysqli_real_escape_string($conn, $val) . "'"; } else { return "NULL"; // or "'0'" if you want default zero string } } // Use for string fields $date_of_reach = esc_and_quote($conn, $_POST['date_of_reach'] ?? ''); $date_raw = $_POST['date_of_unloading'] ?? ''; $formatted_date = $date_raw ? date('Y-m-d H:i:s', strtotime($date_raw)) : null; $date_of_unloading = esc_and_quote($conn, $formatted_date); $quantity_billed = isset($_POST['quantity_billed']) ? (float)$_POST['quantity_billed'] : 0; $rate = isset($_POST['rate']) ? (float)$_POST['rate'] : 0; $amount = isset($_POST['amount']) ? (float)$_POST['amount'] : 0; $cgst = esc_and_quote($conn, $_POST['cgst'] ?? ''); $sgst = esc_and_quote($conn, $_POST['sgst'] ?? ''); $igst = esc_and_quote($conn, $_POST['igst'] ?? ''); $finalAmount = esc_and_quote($conn, $_POST['finalAmount'] ?? ''); $amountWords = esc_and_quote($conn, $_POST['amountWords'] ?? ''); // Assuming $updated_at is a string and defined, escape it too $updated_at_escaped = esc_and_quote($conn, $updated_at); $id = (int)$id; $sql = "UPDATE road_challans SET date_of_reach = $date_of_reach, date_of_unloading = $date_of_unloading, quantity_billed = $quantity_billed, rate = $rate, amount = $amount, cgst = $cgst, sgst = $sgst, igst = $igst, finalAmount = $finalAmount, amountWords = $amountWords, updated_at = $updated_at_escaped WHERE id = $id"; if (mysqli_query($conn, $sql)) { echo "<script> alert('Invoice updated successfully!'); window.location.href = 'challan.php'; </script>"; } else { echo "Error updating invoice: " . mysqli_error($conn); } } else if ($_POST['form_id'] == 'bill_book_update') { $bill_book_vendor = esc_str($conn, $_POST['bill_book_vendor'] ?? ''); $bill_book_invoice = esc_str($conn, $_POST['bill_book_invoice'] ?? ''); $bill_book_date = esc_str($conn, $_POST['bill_book_date'] ?? ''); $bill_book_vehicle_type = esc_str($conn, $_POST['bill_book_vehicle_type'] ?? ''); $bill_book_value = isset($_POST['bill_book_value']) ? (float)$_POST['bill_book_value'] : 0; $bill_book_loading_expenses = isset($_POST['bill_book_loading_expenses']) ? (float)$_POST['bill_book_loading_expenses'] : 0; $bill_book_office_expenses = isset($_POST['bill_book_office_expenses']) ? (float)$_POST['bill_book_office_expenses'] : 0; $bill_book_total_cost = isset($_POST['bill_book_total_cost']) ? (float)$_POST['bill_book_total_cost'] : 0; $bill_book_lease_exp = isset($_POST['bill_book_lease_exp']) ? (float)$_POST['bill_book_lease_exp'] : 0; $bill_book_fuel_exp = isset($_POST['bill_book_fuel_exp']) ? (float)$_POST['bill_book_fuel_exp'] : 0; $bill_book_toll_exp = isset($_POST['bill_book_toll_exp']) ? (float)$_POST['bill_book_toll_exp'] : 0; $bill_book_freight_exp = isset($_POST['bill_book_freight_exp']) ? (float)$_POST['bill_book_freight_exp'] : 0; $bill_book_road_exp = isset($_POST['bill_book_road_exp']) ? (float)$_POST['bill_book_road_exp'] : 0; $bill_book_total_exp = isset($_POST['bill_book_total_exp']) ? (float)$_POST['bill_book_total_exp'] : 0; $sql = "UPDATE road_challans SET bill_book_vendor = $bill_book_vendor, bill_book_invoice = $bill_book_invoice, bill_book_date = $bill_book_date, bill_book_value = $bill_book_value, bill_book_loading_expenses = $bill_book_loading_expenses, bill_book_office_expenses = $bill_book_office_expenses, bill_book_total_cost = $bill_book_total_cost, bill_book_vehicle_type = $bill_book_vehicle_type, bill_book_lease_exp = $bill_book_lease_exp, bill_book_fuel_exp = $bill_book_fuel_exp, bill_book_toll_exp = $bill_book_toll_exp, bill_book_freight_exp = $bill_book_freight_exp, bill_book_road_exp = $bill_book_road_exp, bill_book_total_exp = $bill_book_total_exp, updated_at = '" . $updated_at . "' WHERE id = $id"; if (mysqli_query($conn, $sql)) { echo "<script> alert('Bill book updated successfully!'); window.location.href = 'challan.php'; </script>"; } else { echo "Error updating bill book: " . mysqli_error($conn); } } else { echo "Invalid form submission."; } exit; } // Include your header or other HTML/PHP below this point require_once('includes/header.php'); ?> <div class="content"> <button class="btn btn-primary" onclick="toggleSection('challan')">Challan Details</button> <button class="btn btn-success" onclick="toggleSection('invoice')">Invoice Details</button> <button class="btn btn-danger" onclick="toggleSection('book')">Book Cost Details</button> <div class="container mt-4"> <div class="card m-2 shadow-lg p-2"> <div id="challan" class="card" style="display:none;"> <div class="card-header text-center"> <h2>Challan Details</h2> </div> <div class="card-body"> <form method="post"> <div class="row"> <div class="col-md-2"> <div class="form-group"> <label style="font-size: 15px;">Our Company Name</label> <select class="form-control" id="consignorName" name="consignorName" required> <option value="" disabled <?= !isset($challan['consignorName']) ? 'selected' : '' ?>>--Select Company Name--</option> <?php $vendor_query = "SELECT `c_name`,`c_short` FROM `company_master`"; $result = $conn->query($vendor_query); if ($result && $result->num_rows > 0) { while ($row = $result->fetch_assoc()) { $selected = (isset($challan['consignorName']) && $challan['consignorName'] === $row['c_name']) ? 'selected' : ''; echo "<option value='" . htmlspecialchars($row['c_name']) . "' $selected>" . htmlspecialchars($row['c_name']) . ' (' . htmlspecialchars($row['c_short']) . ")</option>"; } } ?> </select> </div> </div> <?php function val($key) { global $challan; return isset($challan[$key]) ? htmlspecialchars($challan[$key]) : ''; } ?> <div class="col-md-2"> <div class="form-group"> <label>Company Address:</label> <input class="form-control" id="consignorAddress" name="consignorAddress" value="<?= val('consignorAddress') ?>"> </div> </div> <div class="col-md-2"> <div class="form-group"> <label>Company Email:</label> <input class="form-control" id="consignorEmail" name="consignorEmail" value="<?= val('consignorEmail') ?>"> </div> </div> <div class="col-md-2"> <div class="form-group"> <label>Phone No:</label> <input class="form-control only-number" id="consignorPhone" name="consignorPhone" minlength="10" maxlength="10" value="<?= val('consignorPhone') ?>"> </div> </div> <div class="col-md-2"> <div class="form-group"> <label>PINCODE</label> <input class="form-control only-number" id="consignorPincode" name="consignorPincode" minlength="6" maxlength="6" value="<?= val('consignorPincode') ?>"> </div> </div> <div class="col-md-2"> <div class="form-group"> <label>GSTIN</label> <input class="form-control only-number" id="consignorGst" name="consignorGst" value="<?= val('consignorGst') ?>"> </div> </div> <div class="col-md-3"> <div class="form-group"> <label>Customer Name:</label> <select class="form-control" id="name" name="name" required> <option value="" disabled <?= !isset($challan['name']) ? 'selected' : '' ?>>--Select Customer Name--</option> <?php $vendor_query = "SELECT `cus_name` FROM `customer_master`"; $result = $conn->query($vendor_query); if ($result && $result->num_rows > 0) { while ($row = $result->fetch_assoc()) { $selected = (isset($challan['name']) && $challan['name'] === $row['cus_name']) ? 'selected' : ''; echo "<option value='" . htmlspecialchars($row['cus_name']) . "' $selected>" . htmlspecialchars($row['cus_name']) . "</option>"; } } ?> </select> </div> </div> <div class="col-md-3"> <div class="form-group"> <label>Address:</label> <input type="text" id="address1" name="address1" class="form-control" readonly value="<?= val('address1') ?>"> </div> </div> <div class="col-md-2"> <div class="form-group"> <label>Destination:</label> <input type="text" id="destination" name="destination" class="form-control" readonly value="<?= val('destination') ?>"> </div> </div> <div class="col-md-2"> <div class="form-group"> <label>Purchase Order No.:</label> <!-- Purchase Order No --> <input type="text" class="form-control" value="<?= val('purchase_order_no') ?>" readonly> </div> </div> <div class="col-md-2"> <div class="form-group"> <label>Order Date</label> <input type="text" id="order_date" name="order_date" class="form-control" readonly value="<?= val('order_date') ?>"> </div> </div> <div class="col-md-3"> <div class="form-group"> <label>Challan No.:</label> <input type="text" id="challanNo" name="challan_no" class="form-control" required value="<?= val('challan_no') ?>"> </div> </div> <div class="col-md-3"> <div class="form-group"> <label>Date:</label> <input type="date" id="date" name="date" class="form-control" required value="<?= val('date') ?>"> </div> </div> <div class="col-md-3"> <div class="form-group"> <label>Vehicle No.:</label> <!-- Vehicle No --> <input type="text" class="form-control" id="vehicle_no" name="vehicle_no" required value="<?= val('vehicle_no') ?>"> </div> </div> <div class="col-md-3"> <div class="form-group"> <label>Vehicle Dispatch Date:</label> <input type="date" id="d_vehicle_date" name="d_vehicle_date" class="form-control" required value="<?= val('d_vehicle_date') ?>"> </div> </div> <div class="col-md-3"> <div class="form-group"> <label>Description of Goods</label> <select class="form-select" id="description" name="description" required> <option value="" disabled <?= !isset($challan['description']) ? 'selected' : '' ?>>--Select Item--</option> <?php $vendor_query = "SELECT `item_name` FROM `item_master`"; $result = $conn->query($vendor_query); if ($result && $result->num_rows > 0) { while ($row = $result->fetch_assoc()) { $selected = (isset($challan['description']) && $challan['description'] === $row['item_name']) ? 'selected' : ''; echo "<option value='" . htmlspecialchars($row['item_name']) . "' $selected>" . htmlspecialchars($row['item_name']) . "</option>"; } } ?> </select> </div> </div> <div class="col-md-3"> <div class="form-group"> <label>Bags</label> <input type="text" id="bags" name="bags" class="form-control" required value="<?= val('bags') ?>"> </div> </div> <!-- <div class="col-md-3"> <div class="form-group"> <label>Quantity Dispatched</label> <input type="text" id="quantity" name="quantity" class="form-control" required value="<?= val('quantity') ?>"> </div> </div> <div class="col-md-3"> <div class="form-group"> <label>Rate:</label> <input type="text" id="rate" name="rate" class="form-control" readonly value="<?= val('rate') ?>"> </div> </div> <div class="col-md-3"> <div class="form-group"> <label>Total Amount:</label> <input type="text" id="amount" name="amount" class="form-control" readonly value="<?= val('amount') ?>"> </div> </div> <div class="col-md-6"> <div class="form-group"> <label>Amount in Words:</label> <input type="text" id="amountWords" name="amountWords" class="form-control" readonly value="<?= val('amountWords') ?>"> </div> </div> --> <div class="col-md-3"> <div class="form-group"> <label>HSN</label> <select class="form-select" id="hsn" name="hsn" required> <option value="" disabled <?= !isset($challan['hsn']) ? 'selected' : '' ?>>--Select HSN--</option> <?php $vendor_query = "SELECT `hsn` FROM `item_master`"; $result = $conn->query($vendor_query); if ($result && $result->num_rows > 0) { while ($row = $result->fetch_assoc()) { $selected = (isset($challan['hsn']) && $challan['hsn'] === $row['hsn']) ? 'selected' : ''; echo "<option value='" . htmlspecialchars($row['hsn']) . "' $selected>" . htmlspecialchars($row['hsn']) . "</option>"; } } ?> </select> </div> </div> <div class="col-md-3"> <div class="form-group"> <label>Driver No:</label> <!-- Driver No --> <input type="text" id="driver_no" name="driver_no" class="form-control only-number" maxlength="10" minlength="10" required value="<?= val('driver_no') ?>"> </div> </div> <div class="col-md-3"> <div class="form-group"> <label>Signature Date Time</label> <input type="datetime-local" id="sig_datetime" name="sig_datetime" class="form-control" required value="<?= val('sig_datetime') ?>"> </div> </div> <div class="col-md-3 d-flex align-items-end"> <div class="mb-3"> <button type="submit" class="btn btn-primary">Update Challan</button> <a href="challan.php" class="btn btn-secondary">Cancel</a> </div> </div> </div> <input type="hidden" name="form_id" value="challan_update"> </form> </div> </div> <div id="invoice" class="card" style="display:none;"> <div class="card-header text-center"> <h2>Invoice Details</h2> </div> <div class="card-body"> <form method="POST"> <div class="row"> <!-- Date Of Reaching --> <div class="col-md-3"> <label for="date_of_reach">Date Of Reaching</label> <input type="date" id="date_of_reach" name="date_of_reach" class="form-control" value="<?= isset($challan['date_of_reach']) ? htmlspecialchars($challan['date_of_reach']) : '' ?>"> </div> <!-- Date Of Unloading --> <div class="col-md-3"> <label for="date_of_unloading">Date Of Unloading</label> <input type="datetime-local" id="date_of_unloading" name="date_of_unloading" class="form-control" value="<?= isset($challan['date_of_unloading']) ? htmlspecialchars($challan['date_of_unloading']) : '' ?>"> </div> <!-- Quantity Reached --> <div class="col-md-3"> <label for="quantity_billed">Quantity Reached</label> <input type="number" step="0.01" id="quantity_billed" name="quantity_billed" class="form-control" value="<?= isset($challan['quantity_billed']) ? htmlspecialchars($challan['quantity_billed']) : '' ?>"> </div> <!-- Customer State (Hidden) --> <input type="hidden" id="cus_state" name="cus_state" value="<?= isset($challan['cus_state']) ? htmlspecialchars($challan['cus_state']) : '' ?>"> <!-- Rate --> <div class="col-md-3"> <label>Rate:</label> <input type="text" id="rate" name="rate" class="form-control" readonly value="<?= val('rate') ?>"> </div> <!-- Base Amount --> <div class="col-md-3"> <label>Total Amount:</label> <input type="text" id="amount" name="amount" class="form-control" readonly value="<?= val('amount') ?>"> </div> <!-- CGST / SGST (Intrastate) --> <div class="col-md-3 tax-intrastate"> <label>CGST (9%):</label> <input type="text" id="cgstAmount" name="cgst" class="form-control" value="<?= val('cgst') ?>" data-rate="<?= isset($challan['cgst']) && $challan['cgst'] ? 9 : 0 ?>" readonly> </div> <div class="col-md-3 tax-intrastate"> <label>SGST (9%):</label> <input type="text" id="sgstAmount" name="sgst" class="form-control" value="<?= val('sgst') ?>" data-rate="<?= isset($challan['sgst']) && $challan['sgst'] ? 9 : 0 ?>" readonly> </div> <!-- IGST (Interstate) --> <div class="col-md-3 tax-interstate"> <label>IGST (18%):</label> <input type="text" id="igstAmount" name="igst" class="form-control" value="<?= val('igst') ?>" data-rate="<?= isset($challan['igst']) && $challan['igst'] ? 18 : 0 ?>" readonly> </div> <!-- Final Amount --> <div class="col-md-3"> <label>Final Amount (Incl. GST):</label> <input type="text" id="finalAmount" name="finalAmount" class="form-control" value="<?= val('finalAmount') ?>" readonly> </div> <!-- Amount in Words --> <div class="col-md-6"> <label>Amount in Words:</label> <input type="text" id="amountWords" name="amountWords" class="form-control" readonly value="<?= val('amountWords') ?>"> </div> <!-- Hidden Input --> <input type="hidden" name="form_id" value="invoice_update"> <!-- Action Buttons --> <div class="col-md-3 d-flex align-items-end"> <button type="submit" class="btn btn-success">Update Invoice</button> <a href="challan.php" class="btn btn-secondary">Cancel</a> </div> </div> </form> <style> .tax-intrastate, .tax-interstate { display: none; } </style> </div> </div> <div id="book" class="card" style="display:none;"> <div class="card-header text-center"> <h2>Book Cost Details</h2> </div> <div class="card-body"> <form method="POST"> <div class="row"> <!-- Vendor Name --> <div class="col-md-3"> <div class="mb-3"> <label for="bill_book_vendor" class="form-label">Vendor Name</label> <select class="form-select" id="bill_book_vendor" name="bill_book_vendor" required> <option value="" disabled <?= empty($challan['bill_book_vendor']) ? 'selected' : '' ?>>--Select Vendor--</option> <?php $vendor_query = "SELECT id, company_name FROM vendor_master WHERE status = 1"; $result = $conn->query($vendor_query); if ($result && $result->num_rows > 0) { while ($row = $result->fetch_assoc()) { $selected = ($row['company_name'] === ($challan['bill_book_vendor'] ?? '')) ? 'selected' : ''; echo "<option value='" . htmlspecialchars($row['company_name']) . "' $selected>" . htmlspecialchars($row['company_name']) . "</option>"; } } ?> </select> </div> </div> <!-- Invoice No. --> <div class="col-md-3"> <div class="mb-3"> <label for="bill_book_invoice" class="form-label">Vendor Invoice No.</label> <input type="text" id="bill_book_invoice" name="bill_book_invoice" class="form-control" required value="<?= htmlspecialchars($challan['bill_book_invoice'] ?? '') ?>"> </div> </div> <!-- Date --> <div class="col-md-3"> <div class="mb-3"> <label for="bill_book_date" class="form-label">Vendor Bill Date</label> <input type="date" id="bill_book_date" name="bill_book_date" class="form-control" required value="<?= htmlspecialchars($challan['bill_book_date'] ?? '') ?>"> </div> </div> <!-- Value --> <div class="col-md-3"> <div class="mb-3"> <label for="value" class="form-label">Value</label> <input type="number" step="0.01" id="value" name="bill_book_value" class="form-control" required value="<?= htmlspecialchars($challan['bill_book_value'] ?? '') ?>"> </div> </div> <!-- Loading Expenses --> <div class="col-md-3"> <div class="mb-3"> <label for="loading_expenses" class="form-label">Loading Expenses</label> <input type="number" step="0.01" id="loading_expenses" name="bill_book_loading_expenses" class="form-control" required value="<?= htmlspecialchars($challan['bill_book_loading_expenses'] ?? '') ?>"> </div> </div> <!-- Office Expenses --> <div class="col-md-3"> <div class="mb-3"> <label for="office_expenses" class="form-label">Office Expenses</label> <input type="number" step="0.01" id="office_expenses" name="bill_book_office_expenses" class="form-control" required value="<?= htmlspecialchars($challan['bill_book_office_expenses'] ?? '') ?>"> </div> </div> <!-- Total Cost --> <div class="col-md-3"> <div class="mb-3"> <label for="total_cost" class="form-label">Total Cost</label> <input type="number" step="0.01" id="total_cost" name="bill_book_total_cost" class="form-control" readonly value="<?= htmlspecialchars($challan['bill_book_total_cost'] ?? '') ?>"> </div> </div> <!-- Is Vehicle --> <div class="col-md-3"> <fieldset class="mb-3"> <legend class="form-label">Is Vehicle</legend> <div class="form-check form-check-inline"> <input type="radio" id="vehicle_leased" name="bill_book_vehicle_type" class="form-check-input vehicle-type" value="Leased" <?= (!empty($challan['bill_book_vehicle_type']) && $challan['bill_book_vehicle_type'] === 'Leased') ? 'checked' : '' ?>> <label class="form-check-label" for="vehicle_leased">Leased</label> </div> <div class="form-check form-check-inline"> <input type="radio" id="vehicle_hired" name="bill_book_vehicle_type" class="form-check-input vehicle-type" value="Hired" <?= (!empty($challan['bill_book_vehicle_type']) && $challan['bill_book_vehicle_type'] === 'Hired') ? 'checked' : '' ?>> <label class="form-check-label" for="vehicle_hired">Hired</label> </div> <div class="form-check form-check-inline"> <input type="radio" id="vehicle_suppliered" name="bill_book_vehicle_type" class="form-check-input vehicle-type" value="Supplier" <?= (!empty($challan['bill_book_vehicle_type']) && $challan['bill_book_vehicle_type'] === 'Supplier') ? 'checked' : '' ?>> <label class="form-check-label" for="vehicle_suppliered">Supplier</label> </div> </fieldset> </div> <!-- Lease, Fuel, Toll Expenses (Leased only) --> <div class="col-md-3 lease-expenses" style="display:none;"> <div class="mb-3"> <label for="bill_book_lease_exp" class="form-label">Lease Expense</label> <input type="number" step="0.01" id="lease_exp" name="bill_book_lease_exp" class="form-control expense-input" value="<?= htmlspecialchars($challan['bill_book_lease_exp'] ?? '') ?>"> </div> </div> <div class="col-md-3 lease-expenses" style="display:none;"> <div class="mb-3"> <label for="bill_book_fuel_exp" class="form-label">Fuel Expense</label> <input type="number" step="0.01" id="fuel_exp" name="bill_book_fuel_exp" class="form-control expense-input" value="<?= htmlspecialchars($challan['bill_book_fuel_exp'] ?? '') ?>"> </div> </div> <div class="col-md-3 lease-expenses" style="display:none;"> <div class="mb-3"> <label for="bill_book_toll_exp" class="form-label">Toll Expense</label> <input type="number" step="0.01" id="toll_exp" name="bill_book_toll_exp" class="form-control expense-input" value="<?= htmlspecialchars($challan['bill_book_toll_exp'] ?? '') ?>"> </div> </div> <!-- Freight Expense (Hired only) --> <div class="col-md-3 hired-expenses" style="display:none;"> <div class="mb-3"> <label for="bill_book_freight_exp" class="form-label">Freight Expense</label> <input type="number" step="0.01" id="freight_exp" name="bill_book_freight_exp" class="form-control expense-input" value="<?= htmlspecialchars($challan['bill_book_freight_exp'] ?? '') ?>"> </div> </div> <!-- Road Expense (Always visible) --> <div class="col-md-3"> <div class="mb-3"> <label for="bill_book_road_exp" class="form-label">Road Expenses</label> <input type="number" step="0.01" id="road_exp" name="bill_book_road_exp" class="form-control expense-input" value="<?= htmlspecialchars($challan['bill_book_road_exp'] ?? '') ?>"> </div> </div> <!-- Total Expense (Always visible, readonly) --> <div class="col-md-3"> <div class="mb-3"> <label for="bill_book_total_exp" class="form-label">Total Expense</label> <input type="number" step="0.01" id="total_exp" name="bill_book_total_exp" class="form-control" readonly value="<?= htmlspecialchars($challan['bill_book_total_exp'] ?? '') ?>"> </div> </div> <div class="col-md-3"> <div class="mb-3"> <button type="submit" class="btn btn-primary">Update Book</button> <a href="challan.php" class="btn btn-secondary">Cancel</a> </div> </div> <script> function updateVisibility() { const leased = document.getElementById('vehicle_leased').checked; const hired = document.getElementById('vehicle_hired').checked; document.querySelectorAll('.lease-expenses').forEach(el => { el.style.display = leased ? 'block' : 'none'; }); document.querySelectorAll('.hired-expenses').forEach(el => { el.style.display = hired ? 'block' : 'none'; }); calculateTotal(); } function calculateTotal() { let total = 0; document.querySelectorAll('.expense-input').forEach(input => { const val = parseFloat(input.value); if (!isNaN(val)) { total += val; } }); document.getElementById('total_exp').value = total.toFixed(2); } // Event listeners document.querySelectorAll('.vehicle-type').forEach(radio => { radio.addEventListener('change', updateVisibility); }); document.querySelectorAll('.expense-input').forEach(input => { input.addEventListener('input', calculateTotal); }); // Initialize on page load window.addEventListener('DOMContentLoaded', () => { updateVisibility(); calculateTotal(); }); </script> </div> <input type="hidden" name="form_id" value="bill_book_update"> </form> </div> </div> </div> </div> </div> <?php require_once('includes/footer.php'); ?> <script> function toggleSection(sectionId) { const sections = ['challan', 'invoice', 'book']; sections.forEach(id => { document.getElementById(id).style.display = (id === sectionId) ? 'block' : 'none'; }); } </script> <script> const valueInput = document.getElementById('value'); const loadInput = document.getElementById('loading_expenses'); const officeInput = document.getElementById('office_expenses'); const totalInput = document.getElementById('total_cost'); function updateTotal() { const v = parseFloat(valueInput.value) || 0; const l = parseFloat(loadInput.value) || 0; const o = parseFloat(officeInput.value) || 0; totalInput.value = (v + l + o).toFixed(2); } [valueInput, loadInput, officeInput].forEach(el => el.addEventListener('input', updateTotal)); document.addEventListener('DOMContentLoaded', updateTotal); </script> <script> document.getElementById("name").addEventListener("change", function() { var selectedName = this.value; fetch('get_customer_address.php', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: 'name=' + encodeURIComponent(selectedName) }) .then(response => response.json()) .then(data => { document.getElementById("address1").value = data.address || ''; document.getElementById("destination").value = data.destination || ''; }) .catch(error => console.error('Error:', error)); }); </script> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script> $(document).ready(function() { $('#consignorName').change(function() { var selectedCompany = $(this).val(); if (selectedCompany) { $.ajax({ url: 'get_company_details.php', type: 'POST', data: { companyName: selectedCompany }, dataType: 'json', success: function(response) { if (response.success) { $('#consignorAddress').val(response.address); $('#consignorEmail').val(response.email); $('#consignorPhone').val(response.mobile); $('#consignorPincode').val(response.pincode); $('#consignorGst').val(response.gstin); } else { alert('Details not found.'); } }, error: function() { alert('Error retrieving company details.'); } }); $.ajax({ url: 'generate_challan_no.php', type: 'POST', dataType: 'json', data: { companyName: selectedCompany }, success: function(challanResponse) { if (challanResponse.success) { $('#challanNo').val(challanResponse.challanNo); } else { $('#challanNo').val(''); alert('Unable to generate challan number'); } }, error: function() { alert('Error generating challan number'); } }); } }); }); </script> <script> $(document).ready(function() { function fetchPurchaseOrders() { const companyName = $('#consignorName').val(); const customerName = $('#name').val(); if (companyName && customerName) { $.ajax({ url: 'fetch_po.php', type: 'POST', dataType: 'json', data: { company_name: companyName, customer_name: customerName }, success: function(response) { $('#purchaseOrderNo').empty().append('<option selected disabled>-- Select PO No. --</option>'); if (Array.isArray(response) && response.length > 0) { response.forEach(function(item) { $('#purchaseOrderNo').append( $('<option>', { value: item.po_no, text: item.po_no, 'data-po_date': item.po_date, 'data-rate': item.rate }) ); }); } else { $('#purchaseOrderNo').append('<option disabled>No PO Found</option>'); } $('#rate, #amount, #amountWords, #order_date').val(''); $('#cgstAmount, #sgstAmount, #igstAmount, #finalAmount').val(''); }, error: function() { alert('Failed to fetch PO details.'); } }); } } function updateRateAndAmount() { const selectedOption = $('#purchaseOrderNo option:selected'); const rate = parseFloat(selectedOption.data('rate')); const poDate = selectedOption.data('po_date'); if (!isNaN(rate)) { $('#rate').val(rate); $('#order_date').val(poDate); calculateAmount(); } else { $('#rate, #amount, #amountWords, #order_date').val(''); } } function calculateAmount() { const quantity = parseFloat($('#quantity_billed').val()); const rate = parseFloat($('#rate').val()); if (!isNaN(quantity) && !isNaN(rate)) { const amount = quantity * rate; $('#amount').val(amount.toFixed(2)); calculateGST(amount); } else { $('#amount, #finalAmount, #amountWords, #cgstAmount, #sgstAmount, #igstAmount').val(''); $('.tax-intrastate, .tax-interstate').hide(); } } function calculateGST(amount) { const state = ($('#cus_state').val() || '').toLowerCase(); const cgstPercent = parseFloat($('#cgstAmount').data('rate')) || 0; const sgstPercent = parseFloat($('#sgstAmount').data('rate')) || 0; const igstPercent = parseFloat($('#igstAmount').data('rate')) || 0; let cgst = 0, sgst = 0, igst = 0; let finalAmount = amount; const isGSTApplicable = (cgstPercent > 0 || sgstPercent > 0 || igstPercent > 0); if (!isGSTApplicable) { // GST is not applicable, reset values $('#cgstAmount, #sgstAmount, #igstAmount').val(''); $('.tax-intrastate, .tax-interstate').hide(); $('#finalAmount').val(finalAmount.toFixed(2)); $('#amountWords').val(convertNumberToWords(finalAmount)); return; } // GST applicable: apply based on state if (state === 'intrastate' && cgstPercent > 0 && sgstPercent > 0) { cgst = (amount * cgstPercent) / 100; sgst = (amount * sgstPercent) / 100; finalAmount += cgst + sgst; $('.tax-intrastate').show(); $('.tax-interstate').hide(); $('#cgstAmount').val(cgst.toFixed(2)); $('#sgstAmount').val(sgst.toFixed(2)); $('#igstAmount').val(''); } else if (state !== 'intrastate' && igstPercent > 0) { igst = (amount * igstPercent) / 100; finalAmount += igst; $('.tax-intrastate').hide(); $('.tax-interstate').show(); $('#cgstAmount').val(''); $('#sgstAmount').val(''); $('#igstAmount').val(igst.toFixed(2)); } $('#finalAmount').val(finalAmount.toFixed(2)); $('#amountWords').val(convertNumberToWords(finalAmount)); } function convertNumberToWords(amount) { const ones = ["", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine"]; const teens = ["Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"]; const tens = ["", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"]; const scales = ["", "Thousand", "Lakh", "Crore"]; function convert_hundred(n) { let str = ""; if (n > 99) { str += ones[Math.floor(n / 100)] + " Hundred "; n %= 100; } if (n > 19) { str += tens[Math.floor(n / 10)] + " " + ones[n % 10]; } else if (n >= 10) { str += teens[n - 10]; } else { str += ones[n]; } return str.trim(); } function convertToIndianFormat(num) { if (num === 0) return "Zero Rupees"; let parts = num.toFixed(2).toString().split("."); let intPart = parseInt(parts[0]); let paisePart = parseInt(parts[1]); let result = ""; const indianGroups = []; indianGroups.push(intPart % 1000); intPart = Math.floor(intPart / 1000); while (intPart > 0) { indianGroups.push(intPart % 100); intPart = Math.floor(intPart / 100); } for (let i = indianGroups.length - 1; i >= 0; i--) { if (indianGroups[i] !== 0) { result += convert_hundred(indianGroups[i]) + " " + scales[i] + " "; } } result = result.trim() + " Rupees"; if (paisePart > 0) { result += " and " + convert_hundred(paisePart) + " Paise"; } return result; } return convertToIndianFormat(amount); } // Event Listeners $('#consignorName, #name').on('change', fetchPurchaseOrders); $('#purchaseOrderNo').on('change', updateRateAndAmount); $('#quantity_billed').on('input', function() { const quantity = parseFloat($(this).val()); if (!isNaN(quantity)) { calculateAmount(); } else { $('#amount, #finalAmount, #amountWords, #cgstAmount, #sgstAmount, #igstAmount').val(''); $('.tax-intrastate, .tax-interstate').hide(); } }); // Initial state check const initialState = ($('#cus_state').val() || '').toLowerCase(); if (initialState === 'intrastate') { $('.tax-intrastate').show(); $('.tax-interstate').hide(); } else { $('.tax-intrastate').hide(); $('.tax-interstate').show(); } }); </script>
| ver. 1.4 |
Github
|
.
| PHP 8.1.32 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка