Файловый менеджер - Редактировать - /home/d46091/invoice.ecogenix.in/add_challan.php
Назад
<?php // index.php - Home page showing recent invoices and summary require_once('includes/connection.php'); require_once('includes/header.php'); ?> <style> body { font-family: Arial, sans-serif; margin: 0; padding: 20px; } .container { max-width: 1000px; margin: 0 auto; border: 2px solid #333; padding: 20px; } .header { text-align: center; margin-bottom: 30px; } .header h1 { margin: 0; padding: 0; font-size: 24px; text-decoration: underline; } .info-section { display: flex; justify-content: space-between; margin-bottom: 20px; } .info-group { width: 48%; } .info-item { margin-bottom: 15px; } .info-item label { font-weight: bold; display: inline-block; min-width: 80px; } .info-item input { width: calc(100% - 90px); padding: 5px; } table { width: 100%; border-collapse: collapse; margin-bottom: 20px; } table, th, td { border: 1px solid #333; } th, td { padding: 10px; text-align: left; } th { background-color: #f2f2f2; } .quantity-cell { width: 30%; } .goods-cell { width: 70%; } .driver-info { margin-bottom: 20px; } .disclaimer { margin-bottom: 20px; } .signature { text-align: left; margin-top: 40px; text-decoration: underline; font-style: italic; } .buttons { text-align: center; margin-top: 20px; } .print-btn { padding: 10px 20px; background-color: #4CAF50; color: white; border: none; cursor: pointer; font-size: 16px; } .print-btn:hover { background-color: #45a049; } @media print { .buttons { display: none; } } </style> <div class="content"> <div class="text-end"> <a href="challan.php" class="btn btn-danger ">Back</a> </div> <div class="container"> <div class="header"> <h1>BOOK SALE</h1> </div> <form id="challanForm"> <div class="row"> <div class="col-md-2"> <div class="form-group"> <label for="" style="font-size: 15px;">Our Company Name</label> <select class="form-control" id="consignorName" name="consignorName" required> <option value="" selected disabled>--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()) { echo "<option value='" . htmlspecialchars($row['c_name']) . "'>" . htmlspecialchars($row['c_name']) . ' (' . htmlspecialchars($row['c_short']) . ")</option>"; } } ?> </select> </div> </div> <div class="col-md-2"> <div class="form-group"> <label for="consignorAddress">Company Address:</label> <input class="form-control" id="consignorAddress" name="consignorAddress"> </div> </div> <div class="col-md-2"> <div class="form-group"> <label for="consignorEmail">Company Email:</label> <input class="form-control" id="consignorEmail" name="consignorEmail"> </div> </div> <div class="col-md-2"> <div class="form-group"> <label for="consignorPhone">Phone No:</label> <input id="consignorPhone" name="consignorPhone" rows="3" class="form-control only-number" minlength="10" maxlength="10"> </div> </div> <div class="col-md-2"> <div class="form-group"> <label for="consignorPincode">PINCODE</label> <input id="consignorPincode" name="consignorPincode" rows="3" class="form-control only-number" minlength="6" maxlength="6"> </div> </div> <div class="col-md-2"> <div class="form-group"> <label for="consignorGst">GSTIN</label> <input id="consignorGst" name="consignorGst" rows="3" class="form-control only-number" minlength="6" maxlength="6"> </div> </div> <div class="col-md-3"> <div class="form-group"> <label for="name">Customer Name:</label> <select class="form-control" id="name" name="name" required> <option value="" selected disabled>--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()) { echo "<option value='" . htmlspecialchars($row['cus_name']) . "'>" . htmlspecialchars($row['cus_name']) . "</option>"; } } ?> </select> </div> </div> <div class="col-md-3"> <div class="form-group"> <label for="address1">Address:</label> <input type="text" id="address1" name="address1" class="form-control" readonly> </div> </div> <div class="col-md-2"> <div class="form-group"> <label for="destination">Destination:</label> <input type="text" id="destination" name="destination" class="form-control" readonly> </div> </div> <div class="col-md-2"> <div class="form-group"> <label for="purchaseOrderNo" style="font-size: 15px;">Purchase Order No.:</label> <select id="purchaseOrderNo" name="purchaseOrderNo" class="form-control" required> <option value="" selected disabled>-- Select PO No. --</option> </select> </div> </div> <div class="col-md-2"> <div class="form-group"> <label for="order_date">Order Date</label> <input type="text" id="order_date" name="order_date" class="form-control" readonly> </div> </div> <div class="col-md-3"> <div class="form-group"> <label for="challanNo">Challan No.:</label> <input type="text" id="challanNo" name="challanNo" class="form-control" required> </div> </div> <div class="col-md-3"> <div class="form-group"> <label for="date">Date:</label> <input type="date" id="date" name="date" class="form-control" required> </div> </div> <div class="col-md-3"> <div class="form-group"> <!-- <div style="display: flex; align-items: center; gap: 8px;"> --> <label for="vehicleNo">Vehicle No.:</label> <!-- <a href="transporter.php" class="btn btn-sm btn-success p-0" target="_blank">+</a> --> <!-- </div> --> <input type="text" class="form-control" id="vehicleNo" name="vehicleNo" required> <!-- <select class="form-select" id="vehicleNo" name="vehicleNo" required> <option value="" selected disabled>--Select Vehicle No--</option> <?php $vendor_query = "SELECT `vehicle_no` FROM `vehicle_master`"; $result = $conn->query($vendor_query); if ($result && $result->num_rows > 0) { while ($row = $result->fetch_assoc()) { echo "<option value='" . htmlspecialchars($row['vehicle_no']) . "'>" . htmlspecialchars($row['vehicle_no']) . "</option>"; } } ?> </select> --> </div> </div> <div class="col-md-3"> <div class="form-group"> <label for="d_vehicle_date">Vehicle Dispatch Date:</label> <input type="date" id="d_vehicle_date" name="d_vehicle_date" class="form-control" required> </div> </div> <div class="col-md-3"> <div class="form-group"> <label for="description">Description of Goods</label> <select class="form-select" id="description" name="description" style="width: 100%; border: none;" required> <option value="" selected disabled>--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()) { echo "<option value='" . htmlspecialchars($row['item_name']) . "'>" . htmlspecialchars($row['item_name']) . "</option>"; } } ?> </select> </div> </div> <div class="col-md-3" id="itemDescriptionContainer" style="display: none;"> <div class="form-group"> <label for="itemDescription">Item Special Note</label> <input type="text" class="form-control" id="itemDescription" name="itemDescription" readonly> </div> </div> <div class="col-md-3"> <div class="form-group"> <label for="bags">Bags</label> <input type="text" id="bags" name="bags" class="form-control" required> </div> </div> <div class="col-md-3"> <div class="form-group"> <label for="quantity">Quantity Dispatched</label> <input type="text" id="quantity" name="quantity" class="form-control" required> </div> </div> <div class="col-md-3"> <div class="form-group"> <label for="rate">Rate:</label> <input type="text" id="rate" name="rate" class="form-control" readonly> </div> </div> <div class="col-md-3"> <div class="form-group"> <label for="amount">Total Amount:</label> <input type="text" id="amount" name="amount" class="form-control" readonly> </div> </div> <input type="hidden" id="cus_state" name="cus_state" class="form-control" readonly> <div class="col-md-2" id="cgstContainer"> <div class="form-group"> <label for="cgst">CGST:</label> <input type="text" id="cgst" name="cgst" class="form-control" readonly> </div> </div> <div class="col-md-2" id="sgstContainer"> <div class="form-group"> <label for="sgst">SGST:</label> <input type="text" id="sgst" name="sgst" class="form-control" readonly> </div> </div> <div class="col-md-2" id="igstContainer"> <div class="form-group"> <label for="igst">IGST:</label> <input type="text" id="igst" name="igst" class="form-control" readonly> </div> </div> <div class="col-md-2" id="gstTotalContainer"> <div class="form-group"> <label for="gstTotal">GST Total:</label> <input type="text" id="gstTotal" name="gstTotal" class="form-control" readonly> </div> </div> <div class="col-md-3"> <div class="form-group"> <label for="finalAmount">Final Amount (Incl. GST):</label> <input type="text" id="finalAmount" name="finalAmount" class="form-control" readonly> </div> </div> <div class="col-md-6"> <div class="form-group"> <label for="amountWords">Amount in Words:</label> <input type="text" id="amountWords" name="amountWords" class="form-control" readonly> </div> </div> <div class="col-md-3"> <div class="form-group"> <label for="hsn">HSN</label> <input type="text" id="hsn" name="hsn" class="form-control" readonly> <!-- <select class="form-select" id="hsn" name="hsn" style="width: 100%; border: none; margin-top: 5px;" required> <option value="" selected disabled>--Select HSN--</option> <?php $vendor_query = "SELECT `hsn` FROM `hsn_master`"; $result = $conn->query($vendor_query); if ($result && $result->num_rows > 0) { while ($row = $result->fetch_assoc()) { echo "<option value='" . htmlspecialchars($row['hsn']) . "'>" . htmlspecialchars($row['hsn']) . "</option>"; } } ?> </select> --> </div> </div> <div class="col-md-3"> <div class="form-group"> <label for="driverNo">Driver No:</label> <input type="text" id="driverNo" name="driverNo" class="form-control only-number" maxlength="10" minlength="10" required> </div> </div> <div class="col-md-3"> <div class="form-group"> <label for="sig_datetime">Signature Date Time</label> <input type="datetime-local" id="sig_datetime" name="sig_datetime" class="form-control" required> </div> </div> <input type="hidden" id="cgstPercent"> <input type="hidden" id="sgstPercent"> <input type="hidden" id="igstPercent"> </div> </form> <div class="buttons"> <button type="button" id="printBtn" class="print-btn">Save & Print</button> </div> </div> </div> <?php require_once('includes/footer.php'); ?> <!-- Save --> <script> document.getElementById('printBtn').addEventListener('click', function() { // Collect form data const formData = new FormData(document.getElementById('challanForm')); // Create an XMLHttpRequest object const xhr = new XMLHttpRequest(); // Configure it to send a POST request to the save_challan.php script xhr.open('POST', 'save_challan.php', true); // Define what happens on successful data submission xhr.onload = function() { if (xhr.status === 200) { // If successful, print the page alert('Challan data saved successfully!'); window.open('challan.php'); } else { // If failed, show an error message alert('Error saving challan data. Please try again.'); } }; // Define what happens in case of error xhr.onerror = function() { alert('Error saving challan data. Please try again.'); }; // Send the form data xhr.send(formData); }); </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 || ''; document.getElementById("cus_state").value = data.cus_state || ''; updateTaxVisibility(data.cus_state); }) .catch(error => console.error('Error:', error)); }); </script> <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> <script> function updateTaxVisibility(stateType) { const state = (stateType || '').toLowerCase(); if (state === 'intrastate') { $('#cgstContainer').show(); $('#sgstContainer').show(); $('#igstContainer').hide(); } else if (state === 'outerstate') { $('#cgstContainer').hide(); $('#sgstContainer').hide(); $('#igstContainer').show(); } else { $('#cgstContainer, #sgstContainer, #igstContainer').hide(); } } $(document).ready(function() { // Hide all tax fields on load $('#cgstContainer, #sgstContainer, #igstContainer').hide(); // Also check if state value is already populated on load const initialState = $('#cus_state').val(); if (initialState) { updateTaxVisibility(initialState); } $('#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 value="" selected disabled>-- Select PO No. --</option>'); if (Array.isArray(response) && response.length > 0) { response.forEach(function(item) { console.log(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>'); } // Reset rate and amount fields $('#rate, #amount, #amountWords').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').val()); const rate = parseFloat($('#rate').val()); if (!isNaN(quantity) && !isNaN(rate)) { const amount = quantity * rate; $('#amount').val(amount.toFixed(2)); calculateGST(amount); // 👈 call GST calculator } else { $('#amount').val(''); $('#gstTotal').val(''); $('#cgst').val(''); $('#sgst').val(''); $('#igst').val(''); $('#amountWords').val(''); } } function calculateGST(amount) { const cgstPercent = parseFloat($('#cgstPercent').val()) || 0; const sgstPercent = parseFloat($('#sgstPercent').val()) || 0; const igstPercent = parseFloat($('#igstPercent').val()) || 0; let cgstAmount = 0, sgstAmount = 0, igstAmount = 0; const state = ($('#cus_state').val() || '').toLowerCase(); if (state === 'intrastate' && (cgstPercent > 0 || sgstPercent > 0)) { cgstAmount = amount * (cgstPercent / 100); sgstAmount = amount * (sgstPercent / 100); $('#cgst').val(cgstAmount.toFixed(2)); $('#sgst').val(sgstAmount.toFixed(2)); $('#igst').val(''); } else if (state === 'outerstate' && igstPercent > 0) { igstAmount = amount * (igstPercent / 100); $('#cgst').val(''); $('#sgst').val(''); $('#igst').val(igstAmount.toFixed(2)); } else { // No GST applied $('#cgst').val(''); $('#sgst').val(''); $('#igst').val(''); } const gstTotal = cgstAmount + sgstAmount + igstAmount; const finalTotal = amount + gstTotal; $('#gstTotal').val(gstTotal > 0 ? gstTotal.toFixed(2) : ''); $('#finalAmount').val(finalTotal.toFixed(2)); $('#amountWords').val(convertNumberToWords(finalTotal)); } 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 = 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 = ""; let place = 0; 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').on('input', calculateAmount); }); </script> <script> $('#description').on('change', function() { var selectedItem = $(this).val(); if (selectedItem) { $.ajax({ url: 'get_item_description.php', type: 'POST', data: { item_name: selectedItem }, dataType: 'json', success: function(response) { if (response && !response.error) { $('#hsn').val(response.hsn || ''); $('#cgstPercent').val(response.cgst || ''); $('#sgstPercent').val(response.sgst || ''); $('#igstPercent').val(response.igst || ''); if (response.description && response.description.trim() !== '') { $('#itemDescription').val(response.description); $('#itemDescriptionContainer').show(); } else { $('#itemDescription').val(''); $('#itemDescriptionContainer').hide(); } } else { $('#itemDescriptionContainer').hide(); } } }); } else { $('#itemDescriptionContainer').hide(); } }); </script>
| ver. 1.4 |
Github
|
.
| PHP 8.1.32 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка