Файловый менеджер - Редактировать - /home/d46091/invoice.ecogenix.in/challan_invoice.php
Назад
<?php require_once('includes/connection.php'); // echo '<pre>'; // print_r($_GET); // die(); $selectedChallans = isset($_GET['challans']) ? $_GET['challans'] : []; // $selectedVehicle = isset($_GET['challans']) ? $_GET['challans'] : []; $company_name = isset($_GET['company_name']) ? $_GET['company_name'] : ''; $customer_name = isset($_GET['customer_name']) ? $_GET['customer_name'] : ''; $challanDetails = []; if (!empty($selectedChallans)) { $inList = implode(',', array_map(function ($c) use ($conn) { return "'" . $conn->real_escape_string($c) . "'"; }, $selectedChallans)); $sql = " SELECT id, name, address1, address2, purchase_order_no, challan_no, date, vehicle_no, quantity_billed, description, hsn, driver_no, created_at, updated_at, consignorName, consignorAddress, consignorPhone, consignorPincode, destination, consignorGst, d_vehicle_date, rate, amount, amountWords, order_date FROM road_challans WHERE challan_no IN ($inList) "; if ($res = $conn->query($sql)) { while ($row = $res->fetch_assoc()) { $challanDetails[$row['challan_no']] = $row; } } } require_once('includes/header.php'); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Bill of Supply</title> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css"> <style> body { font-family: Arial, sans-serif; background-color: #f4f4f4; padding: 20px; } .container { background: #fff; padding: 20px; border-radius: 5px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); max-width: 900px; margin: auto; } h1 { text-align: center; margin-bottom: 20px; } .form-select, input, textarea { width: 100%; } table { width: 100%; border-collapse: collapse; margin: 20px 0; } th, td { border: 1px solid #ddd; padding: 8px; } th { background-color: #f2f2f2; } .buttons { text-align: center; margin-top: 20px; } button { min-width: 150px; } </style> </head> <body> <div class="content"> <div class="text-end mb-3"> <a href="challan.php" class="btn btn-danger">Back</a> </div> <h1>BILL OF SUPPLY</h1> <form id="invoiceForm"> <div class="row g-3"> <div class="col-md-3"> <label for="consignorName" class="form-label">Consignor Name:</label> <select id="consignorName" name="consignorName" class="form-select" required> <option value="" disabled selected>--Select Company Name--</option> <?php $vendor_query = "SELECT `c_name`, `c_short` FROM `company_master`"; $res = $conn->query($vendor_query); while ($row = $res->fetch_assoc()) { $sel = ($row['c_name'] === $company_name) ? ' selected' : ''; echo "<option value=\"" . htmlspecialchars($row['c_name']) . "\"{$sel}>" . htmlspecialchars($row['c_name']) . ' (' . htmlspecialchars($row['c_short']) . ")</option>"; } ?> </select> </div> <div class="col-md-2"> <label for="consignorAddress" class="form-label">Address:</label> <input type="text" id="consignorAddress" name="consignorAddress" class="form-control" readonly> </div> <div class="col-md-2"> <label for="consignorPhone" class="form-label">Mobile:</label> <input type="text" id="consignorPhone" name="consignorPhone" class="form-control" readonly> </div> <div class="col-md-2"> <label for="consignorPincode" class="form-label">Pincode:</label> <input type="text" id="consignorPincode" name="consignorPincode" class="form-control" readonly> </div> <div class="col-md-2"> <label for="consignorGst" class="form-label">GSTIN:</label> <input type="text" id="consignorGst" name="consignorGst" class="form-control" readonly> </div> <div class="col-md-3"> <label for="consigneeName" class="form-label">Consignee (Ship to):</label> <select id="consigneeName" name="consigneeName" class="form-select" required> <option value="" disabled selected>--Select Customer Name--</option> <?php $vendor_query = "SELECT `cus_name` FROM `customer_master`"; $res = $conn->query($vendor_query); while ($row = $res->fetch_assoc()) { $sel = ($row['cus_name'] === $customer_name) ? ' selected' : ''; echo "<option value=\"" . htmlspecialchars($row['cus_name']) . "\"{$sel}>" . htmlspecialchars($row['cus_name']) . "</option>"; } ?> </select> </div> <div class="col-md-2"> <label for="consigneeAddress" class="form-label">Address:</label> <input type="text" id="consigneeAddress" name="consigneeAddress" class="form-control" readonly> </div> <div class="col-md-2"> <label for="buyerName" class="form-label">Buyer (Bill to):</label> <input type="text" id="buyerName" name="buyerName" class="form-control" readonly> </div> <div class="col-md-2"> <label for="buyerAddress" class="form-label">Buyer Address:</label> <input type="text" id="buyerAddress" name="buyerAddress" class="form-control" readonly> </div> <div class="col-md-2"> <label for="destination" class="form-label">Destination:</label> <input type="text" id="destination" name="destination" class="form-control" readonly> </div> <div class="col-md-2"> <label for="challanNo" class="form-label">Invoice No:</label> <input type="text" id="challanNo" name="invoiceNo" class="form-control" required> </div> <div class="col-md-2"> <label for="invoiceDate" class="form-label">Invoice Date:</label> <input type="date" id="invoiceDate" name="invoiceDate" class="form-control" required> </div> <!-- <div class="col-md-2"> <label for="buyerOrderDate" class="form-label">Order Dated:</label> <input type="date" id="buyerOrderDate" name="buyerOrderDate" class="form-control"> </div> --> <!-- <div class="col-md-2"> <label for="vehicleNo" class="form-label">Vehicle No.:</label> <select id="vehicleNo" name="vehicleNo" class="form-select" required> <option value="" disabled selected>--Select Vehicle No--</option> <?php $vendor_query = "SELECT `vehicle_no` FROM `vehicle_master`"; $res = $conn->query($vendor_query); while ($row = $res->fetch_assoc()) { echo "<option>" . htmlspecialchars($row['vehicle_no']) . "</option>"; } ?> </select> </div> <div class="col-md-3"> <label for="d_vehicle_date" class="form-label">Vehicle Dispatch Date:</label> <input type="date" id="d_vehicle_date" name="d_vehicle_date" class="form-control" required> </div> --> </div> <!-- Item Details Table --> <table id="itemTable" class="table table-bordered mt-4"> <thead> <tr> <th>Challan No</th> <th>Challan Date</th> <th>Vehicle No.</th> <th>Qty</th> <th>Work Order No.</th> <th>Rate</th> <th>Sub Total Amount</th> </tr> </thead> <tbody> <?php foreach ($selectedChallans as $challan): $d = $challanDetails[$challan] ?? []; // echo '<pre>'; // print_r($d); // die(); ?> <tr> <td><input type="text" name="challanNos[]" class="form-control" value="<?= htmlspecialchars($challan) ?>" readonly></td> <td><input type="date" name="dates[]" class="form-control" value="<?= !empty($d['date']) ? date('Y-m-d', strtotime($d['date'])) : '' ?>" readonly></td> <td><input type="text" name="vehicleNo[]" class="form-control" value="<?= $d['vehicle_no'] ?>" readonly></td> <td><input type="number" step="0.01" name="weight[]" class="form-control" value="<?= htmlspecialchars($d['quantity_billed'] ?? '') ?>"></td> <td> <select name="w_o_no[]" class="form-select" required> <option value="" disabled>--Select PO--</option> <?php $poRes = $conn->query("SELECT `po_no` FROM `purchase_order_master`"); while ($po = $poRes->fetch_assoc()): $sel = (isset($d['purchase_order_no']) && $d['purchase_order_no'] === $po['po_no']) ? ' selected' : ''; ?> <option value="<?= htmlspecialchars($po['po_no']) ?>" <?= $sel ?>><?= htmlspecialchars($po['po_no']) ?></option> <?php endwhile; ?> </select> </td> <td><input type="text" name="rate[]" class="form-control rate-field" value="<?= htmlspecialchars($d['rate'] ?? '') ?>" readonly></td> <td><input type="text" name="sub_total[]" class="form-control" value="<?= htmlspecialchars($d['amount'] ?? '') ?>"></td> </tr> <?php endforeach; ?> <tr> <th colspan="2">Total</th> <td><input type="text" id="total-qty" name="total-qty" class="form-control" readonly></td> <td></td> <td><input type="text" id="total-rate" name="total-rate" class="form-control" readonly></td> <td><input type="text" id="total-amount" name="total-amount" class="form-control" readonly></td> </tr> </tbody> </table> <input type="hidden" id="paymentTerms" name="paymentTerms" value="As Per Work Order"> <input type="hidden" id="declaration" name="declaration" value="We declare that this invoice shows the actual price of the goods described and that all particulars are true and correct."> <div class="buttons"> <button type="button" id="printInvoice" class="btn btn-warning">Save & Print</button> </div> </form> </div> <?php require_once('includes/footer.php'); ?> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script> $(function() { // === When consignor changes, fetch company details + new challan no === $('#consignorName').on('change', function() { const companyName = $(this).val(); if (!companyName) return; $.post('get_company_details.php', { companyName }, function(resp) { if (!resp.success) return alert('Company details not found.'); $('#consignorAddress').val(resp.address); $('#consignorPhone').val(resp.mobile); $('#consignorPincode').val(resp.pincode); $('#consignorGst').val(resp.gstin || ''); // now generate challan no // $.post('generate_challan_no.php', { // companyName // }, function(chResp) { // if (chResp.success) { // $('#challanNo').val(chResp.challanNo); // } else { // $('#challanNo').val(''); // alert('Unable to generate challan number'); // } // }, 'json'); }, 'json'); }); // === When consignee changes, fetch customer details === $('#consigneeName').on('change', function() { const customerName = $(this).val(); if (!customerName) return; $.post('get_customer_details.php', { customerName }, function(resp) { if (!resp.success) return alert('Customer details not found.'); $('#consigneeAddress').val(resp.consigneeAddress); $('#buyerName').val(resp.buyerName); $('#buyerAddress').val(resp.buyerAddress); $('#destination').val(resp.destination); }, 'json'); }); // === Bind each item-row to calculate subtotal and grand totals === function bindRow($row) { const $qty = $row.find('input[name="weight[]"]'); const $rate = $row.find('.rate-field'); const $po = $row.find('select[name="w_o_no[]"]'); const $sub = $row.find('input[name="sub_total[]"]'); // when PO changes, fetch its rate $po.on('change', function() { const poNo = $(this).val(); fetch('get_rate.php?po_no=' + encodeURIComponent(poNo)) .then(r => r.json()) .then(data => { $rate.val(data.success ? data.rate : ''); $rate.trigger('change'); }); }); // recalc per-row and totals function recalcRow() { const q = parseFloat($qty.val()) || 0; const r = parseFloat($rate.val()) || 0; $sub.val((q * r).toFixed(2)); recalcTotals(); } $qty.add($rate).on('input change', recalcRow); } function recalcTotals() { let sumQ = 0, sumR = 0, sumA = 0; $('#itemTable tbody tr').each(function() { const $tr = $(this); const q = parseFloat($tr.find('input[name="weight[]"]').val()) || 0; const r = parseFloat($tr.find('.rate-field').val()) || 0; const a = parseFloat($tr.find('input[name="sub_total[]"]').val()) || 0; sumQ += q; sumR += r; sumA += a; }); $('#total-qty').val(sumQ.toFixed(2)); $('#total-rate').val(sumR.toFixed(2)); $('#total-amount').val(sumA.toFixed(2)); } $('#itemTable tbody tr').each(function() { if ($(this).find('input[name="sub_total[]"]').length) { bindRow($(this)); } }); recalcTotals(); // === Save & Print button === $('#printInvoice').on('click', function() { const formData = new FormData($('#invoiceForm')[0]); $.ajax({ url: 'save_chal_invoice.php', method: 'POST', data: formData, contentType: false, processData: false, dataType: 'json', success(resp) { if (!resp.success) return alert('Error saving invoice: ' + resp.message); alert('Invoice saved successfully!'); window.open('print_challan_invoice.php?id=' + resp.invoice_id, '_blank'); }, error() { alert('An error occurred while saving the invoice.'); } }); }); // === On page load, if GET provided defaults, fire change handlers === const defaultCompany = <?= json_encode($company_name) ?>; const defaultCustomer = <?= json_encode($customer_name) ?>; if (defaultCompany) $('#consignorName').val(defaultCompany).trigger('change'); if (defaultCustomer) $('#consigneeName').val(defaultCustomer).trigger('change'); }); </script> </body> </html>
| ver. 1.4 |
Github
|
.
| PHP 8.1.32 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка