Create New Item
×
Item Type
File
Folder
Item Name
File Manager
/
cloth
/
pages
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php include("../db/cn.php"); ob_start(); if (isset($_SESSION['user_name']) && isset($_SESSION['user_role']) && isset($_SESSION['outlet_name']) && isset($_SESSION['outlet_address'])) { $userName = $_SESSION['user_name']; $userRole = $_SESSION['user_role']; $outlet_address = $_SESSION['outlet_address']; $outlet_name = $_SESSION['outlet_name']; } if ($connection->connect_error) { die("Connection failed: " . $connection->connect_error); } if (isset($_GET['query'])) { $query = $connection->real_escape_string($_GET['query']); $sql = "SELECT product_id, product_name, retail_price, trade_price, supplier, company, product_unit, quantity FROM products WHERE product_name LIKE '%$query%'"; $result = $connection->query($sql); $suggestions = ""; while ($row = $result->fetch_assoc()) { $suggestions .= "<div class='dropdown-item' data-product-id='" . $row['product_id'] . "' data-product-quantity='" . $row['quantity'] . "' data-retail-price='" . $row['trade_price'] . "' data-trade-price='" . $row['trade_price'] . "' data-supplier='" . $row['supplier'] . "' data-company='" . $row['company'] . "' data-product-unit='" . $row['product_unit'] . "'>" . $row['product_name'] . "</div>"; } echo $suggestions; exit; } if (isset($_GET['customer_name'])) { $customerName = $connection->real_escape_string($_GET['customer_name']); $sql = "SELECT supplier_name, supplier_id, supplier_phone FROM supplier WHERE supplier_name LIKE '%$customerName%' LIMIT 5"; $result = $connection->query($sql); $suggestions = ""; while ($row = $result->fetch_assoc()) { $suggestions .= "<div class='dropdown-item' data-customer-name='" . $row['supplier_name'] . "' data-customer-id='" . $row['supplier_id'] . "' data-customer-phone='" . $row['supplier_phone'] . "'>" . $row['supplier_name'] . "</div>"; } echo $suggestions; exit; } $user = $userName; $role = $userRole; $outlet = $outlet_name; $address = $outlet_address; if (isset($_GET['inv_id'])) { // Get the search term $order_id = $_GET['inv_id']; if (!empty($order_id)) { // Query to search for order_ids in the log_user_sales table $stmt = $connection->prepare("SELECT inv_id FROM purchase WHERE inv_id LIKE ? GROUP BY inv_id"); $like_order_id = "%" . $order_id . "%"; $stmt->bind_param("s", $like_order_id); $stmt->execute(); $result = $stmt->get_result(); // Generate HTML output if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { echo '<div class="dropdown-item" data-order-id="' . $row['inv_id'] . '">' . $row['inv_id'] . '</div>'; } } else { echo '<div class="dropdown-item">No Invoice found</div>'; } $stmt->close(); } $connection->close(); exit; // End the PHP processing for AJAX request here } if ($_SERVER['REQUEST_METHOD'] === 'POST'&& isset($_POST['inv_bill'])) { if ($connection->connect_error) { die("Connection failed: " . $connection->connect_error); } $productData = json_decode($_POST['productData'], true); $orderId = uniqid("inv_id"); $paidBy = $_POST['method']; $discount_amount = $_POST["bill_amount"]; $discounted = $_POST["discount_amount"]; $discount_per = $_POST["discount_percent"]; $cash_amount = $_POST["cash_received"]; $change_amount = $_POST["cash_return"]; $customerName = $_POST["customer_name"]; $customerPhone = $_POST["customer_phone"]; $customer_type = $_POST["customer_type"]; $customer_id = $_POST["customer_id"]; $date_time = date("Y-m-d"); foreach ($productData as $product) { $productId = $product['productId']; $productName = $product['description']; $productPrice = $product['pricePerUnit']; $tradePrice = $product['tradePrice']; $productQuantity = $product['quantity']; $productTotal = $product['totalPrice']; $discount = $product['discountPercentage']; $tax = $product['tax']; $netAmount = $product['netAmount']; $supplierName = $product['supplier']; $company = $product['company']; $sale_cost = $tradePrice * $productQuantity; $length = $product['length']; // Only length now $area = $product['area']; // Already calculated before $piece = $product['piece']; $tp = $productTotal / $productQuantity; $sql = "INSERT INTO purchase ( product_id, supplier_name, company, product_name, length, area, piece, product_price, trade_price, product_quantity, product_total, bonus, discount, tax, net_amount, total_amount, paid_by, sale_cost, customer_id, customer_type, customer_name, customer_phone, discount_amount, discounted, discount_per, cash_amount, change_amount, inv_id, r_inv_id, status, outlet_name, login_user, user_role, outlet_address, date_time ) VALUES ( '$productId', '$supplierName', '$company', '$productName', '$length', '$area', '$piece', '$productPrice', '$tradePrice', '$productQuantity', '$productTotal', '', '$discount', '$tax', '$netAmount', '$productTotal', '$paidBy', '$sale_cost', '$customer_id', '$customer_type', '$customerName', '$customerPhone', '$discount_amount', '$discounted', '$discount_per', '$cash_amount', '$change_amount', '$orderId', '', '', '$outlet', '$user', '$role', '$address', '$date_time' )"; if ($connection->query($sql) !== TRUE) { echo "Error: " . $sql . "<br>" . $connection->error; ob_end_flush(); exit; } $updateSql = "UPDATE products SET total_quantity = total_quantity + $productQuantity, total_amount = total_amount + $netAmount, trade_price = $tp WHERE product_name = '$productName'"; if ($connection->query($updateSql) !== TRUE) { echo "Error updating product quantity: " . $connection->error; ob_end_flush(); exit; } } ob_end_clean(); echo "<script type='text/javascript'>window.location.href = 'purchase_n.php';</script>"; } if ($_SERVER['REQUEST_METHOD'] === 'POST'&& isset($_POST['return_bill'])) { if ($connection->connect_error) { die("Connection failed: " . $connection->connect_error); } $productData = json_decode($_POST['productData'], true); $r_inv_id = $_POST["r_inv_id"]; $orderId = $r_inv_id ; $status = 'return'; $paidBy = $_POST['method']; $discount_amount = $_POST["bill_amount"]; $discounted = $_POST["discount_amount"]; $discount_per = $_POST["discount_percent"]; $cash_amount = $_POST["cash_received"]; $change_amount = $_POST["cash_return"]; $customerName = $_POST["customer_name"]; $customerPhone = $_POST["customer_phone"]; $customer_type = $_POST["customer_type"]; $customer_id = $_POST["customer_id"]; $date_time = date("Y-m-d"); foreach ($productData as $product) { $productId = $product['productId']; $productName = $product['description']; $productPrice = $product['pricePerUnit']; $tradePrice = $product['tradePrice']; $productQuantity = $product['quantity']; $productTotal = $product['totalPrice']; $discount = $product['discountPercentage']; $tax = $product['tax']; $netAmount = $product['netAmount']; $supplierName = $product['supplier']; $company = $product['company']; $length = $product['length']; // Only length now $area = $product['area']; // Already calculated before $piece = $product['piece']; $sale_cost = $tradePrice * $productQuantity; $sql = "INSERT INTO purchase ( product_id, supplier_name, company, product_name, length, area, piece, product_price, trade_price, product_quantity, product_total, bonus, discount, tax, net_amount, total_amount, paid_by, sale_cost, customer_id, customer_type, customer_name, customer_phone, discount_amount, discounted, discount_per, cash_amount, change_amount, inv_id, r_inv_id, status, outlet_name, login_user, user_role, outlet_address, date_time ) VALUES ( '$productId', '$supplierName', '$company', '$productName', '$length', '$area', '$piece', '$productPrice', '$tradePrice', '$productQuantity', '$productTotal', '', '$discount', '$tax', '$netAmount', '$productTotal', '$paidBy', '$sale_cost', '$customer_id', '$customer_type', '$customerName', '$customerPhone', '$discount_amount', '$discounted', '$discount_per', '$cash_amount', '$change_amount', '$orderId', '$r_inv_id', '$status', '$outlet', '$user', '$role', '$address', '$date_time' )"; if ($connection->query($sql) !== TRUE) { echo "Error: " . $sql . "<br>" . $connection->error; ob_end_flush(); exit; } $updateSql = "UPDATE products SET total_quantity = total_quantity - $productQuantity, total_amount = total_amount - $netAmount WHERE product_name = '$productName'"; if ($connection->query($updateSql) !== TRUE) { echo "Error updating product quantity: " . $connection->error; ob_end_flush(); exit; } } ob_end_clean(); echo "<script type='text/javascript'>window.location.href = 'purchase_n.php';</script>"; } ob_end_flush(); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Hashmi Cloth House</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css"> <link href="https://fonts.googleapis.com/css2?family=Quicksand:wght@200;300;400;500;600;700&display=swap" rel="stylesheet"> <style> body { font-family: 'Quicksand', sans-serif; } #table-container-wrapper { max-height: 390px; overflow-y: auto; } .bg { background: linear-gradient(270deg, #060606, #0A4657); } .input-group-text { font-weight: 600; font-size: 11px; } .in_form { height: 30px; font-size: 13px; border-color: #0A5064; } label { font-size: 13.5px; font-weight: 700; } .input-group-text { font-weight: 600; font-size: 11px; width: 73px; display: } .dropdown-menu { max-height: 200px; overflow-y: auto; position: absolute; z-index: 1000; width: 100%; } .input-group { position: relative; } .dropdown-item.active, .dropdown-item:active { color: #fff; text-decoration: none; background-color: #0A5064; } </style> </head> <body> <div class="container-fluid"> <div class="row bg"> <div class="col-sm-3 " style="width:100%; height:69px;"> <img src="../img/logo231.png" style="margin-top:5px;" width="56" height="56"></a> </div> <div class="col-sm-6"> <h3 style="color:#fff; font-weight:700; text-transform:uppercase; text-align:center; line-height:60px; font-size:33px;">Hashmi Cloth House</h3> </div> <div class="col-sm-3"> <a href="addproduct.php"> <button type="button" class="btn btn-light mt-3" style="float:right;" >Back</button> </a> </div> </div> </div> <div class="container-fluid"> <form action="purchase_n.php" method="post" enctype="multipart/form-data"> <div class="row"> <div class="col-sm-3" style="background:#F0F0F0; padding:10px; border:1px solid #CCC;"> <div class="input-group mb-3"> <div class="input-group-prepend"> <span class="input-group-text bg-dark text-white">Product</span> </div> <input type="text" class="form-control" id="productInput" placeholder="Start typing a product name..." autocomplete="off"> <div class="dropdown-menu" id="suggestions"></div> </div> <hr> <div class="row"> <div class="col-sm-12 input-group mb-3"> <div class="input-group-prepend"> <span class="input-group-text bg-dark text-white">Length</span> </div> <input type="text" name="length" id="lengthInch" class="form-control" placeholder="Enter Length"> </div> </div> <div class="row"> <div class="col-sm-6 input-group mb-3"> <div class="input-group-prepend"> <span class="input-group-text bg-dark text-white">Area</span> </div> <input type="text" name="sqarea" id="area" class="form-control" placeholder="" readonly> </div> <div class="col-sm-6 input-group mb-3"> <input type="text" name="piece1" id="piece" class="form-control" placeholder=""> <div class="input-group-prepend"> <span class="input-group-text bg-dark text-white">Piece</span> </div> </div> </div> <div class="input-group mb-3"> <div class="input-group-prepend"> <span class="input-group-text bg-dark text-white">Quantity</span> </div> <input type="text" id="quantity" name="quantity" class="form-control" placeholder="" > </div> <div class="input-group mb-3"> <div class="input-group-prepend"> <span class="input-group-text bg-dark text-white">Price / Unit</span> </div> <input type="text" id="retail_price" name="retail_price" class="form-control" placeholder=""> </div> <div class="input-group mb-3"> <div class="input-group-prepend"> <span class="input-group-text bg-dark text-white">Total Price</span> </div> <input type="text" id="total_amount" name="total_amount" class="form-control" placeholder="" readonly> <div class="input-group-prepend"> <span class="input-group-text bg-dark text-white">-/ PKR</span> </div> </div> <div class="input-group mb-3"> <div class="input-group-prepend"> <span class="input-group-text bg-dark text-white">Dis PKR</span> </div> <input type="text" id="percentage" name="percentage" class="form-control" placeholder=""> </div> <div class="input-group mb-3"> <div class="input-group-prepend"> <span class="input-group-text bg-dark text-white">Total Price</span> </div> <input type="text" id="trade_price" name="trade_price" class="form-control" placeholder="" readonly> </div> <br> <button type="button" class="form-control btn btn-dark" id="makeEntry">Make Entry</button> <hr> <button type="button" class="form-control btn btn-dark" onclick="location.reload();">Refresh</button> </div> <div class="col-sm-9"> <div class="row" style="background:#F0F0F0; padding:10px; border:1px solid #CCC;"> <div class=""> <div class="form-group"> <input type="hidden" class="form-control in_form" name="customer_type"> </div> </div> <div class="col-sm-3"> <div class="form-group"> <label>Supplier Name</label> <input type="text" id="customer_name" name="customer_name" class="form-control in_form" autocomplete="off"> <div class="dropdown-menu" id="customer_suggestions"></div> </div> </div> <div class="col-sm-3"> <div class="form-group"> <label>Supplier Phone</label> <input type="text" id="customer_phone" name="customer_phone" class="form-control in_form"> </div> </div> <div class="col-sm-3"> <div class="form-group"> <label>Supplier ID</label> <input type="text" id="customer_id" name="customer_id" class="form-control in_form"> </div> </div> <div class="col-sm-3"> <div class="form-group"> <label>Return ID</label> <input type="text" id="r_order_id" name="r_inv_id" class="form-control in_form"> <div id="order_suggestions" class="dropdown-menu" style="display: none;"></div> </div> </div> </div> <div class="row" style="background:#F0F0F0; padding:10px; border:1px solid #CCC;"> <div class="col-sm-12" style="height:400px;"> <table class="table table-borderless table-sm text-center" id="productsTable"> <tr class="text-white text-center" style="background:#0A4657;"> <td>Item Code</td> <td>Description</td> <td>Length</td> <td>Area</td> <td>Piece</td> <td>Qty</td> <td>Unit Price</td> <td>Amount</td> <td>Dis PKR</td> <td>Tax</td> <td>Net Amount</td> <td>Action</td> </tr> </table> </div> </div> <div class="row" style="margin-top: -10px;"> <div class="col-sm-12" style="background:#F0F0F0; padding:10px; border:1px solid #CCC;"> <br> <div class="row"> <div class="col-sm-2"> <div class="form-group"> <label>Total</label> <input type="number" id="total-input" name="total_input" class="form-control in_form input-height" readonly> </div> </div> <div class="col-sm-2"> <div class="form-group"> <label>Bill Amount</label> <input type="text" id="bill-amount" name="bill_amount" class="form-control in_form input-height" required> </div> </div> <div class="col-sm-2"> <div class="form-group"> <label>Discount Amount</label> <input type="number" id="discount_amount" name="discount_amount" class="form-control in_form input-height"> </div> </div> <div class="col-sm-2"> <div class="form-group"> <label>Discount %</label> <input type="number" id="discount_percent" name="discount_percent" class="form-control in_form input-height" readonly> </div> </div> <div class="col-sm-2"> <div class="form-group"> <label>Cash Paid</label> <input type="number" id="cash_received" name="cash_received" class="form-control in_form input-height"> </div> </div> <div class="col-sm-2"> <div class="form-group"> <label>Cash Return</label> <input type="number" id="cash_return" name="cash_return" class="form-control in_form input-height"> </div> </div> <div class="col-sm-2"> <div class="form-group"> <label>S.Tax(0%)</label> <input type="number" id="tax" name="tax" class="form-control in_form input-height" readonly> </div> </div> <div class="col-sm-2"> <div class="form-group"> <label>Method</label> <select name="method" id="method2" class="form-control in_form"> <option>Cash</option> <option>Credit</option> <option value="bank1">Bank 1</option> <option value="bank2">Bank 2 </option> <option value="bank3">Bank 3</option> <option>Others</option> </select> </div> </div> <input type="hidden" id="productData" name="productData"> <div class="col-sm-3"> <hr> <button type="submit" class="btn btn-dark btn-sm" name="inv_bill">Generate Invoice</button> <button type="submit" class="btn btn-dark btn-sm" name="return_bill">Return Invoice</button> </div> </div> </div> </div> </div> </div> </form> </div> <script> document.addEventListener("DOMContentLoaded", function() { const generateInvoiceButton = document.querySelector("button[name='inv_bill']"); const returnInvoiceButton = document.querySelector("button[name='return_bill']"); generateInvoiceButton.addEventListener("click", function(event) { const method = document.getElementById("method2").value; const supplierName = document.getElementById("customer_name").value.trim(); // Check if method is "Credit" and supplier name is empty if (method === "Credit" && supplierName === "") { event.preventDefault(); // Prevent form submission alert("Please fill in the Supplier Name for Credit method."); } }); returnInvoiceButton.addEventListener("click", function(event) { const returnId = document.getElementById("r_order_id").value.trim(); // Check if Return ID is empty when "Return Invoice" button is clicked if (returnId === "") { event.preventDefault(); // Prevent form submission alert("Please enter a Return ID."); } }); }); </script> <script> document.addEventListener("DOMContentLoaded", function() { let currentFocus = -1; // Event listener for input field to trigger AJAX request document.getElementById("r_order_id").addEventListener("input", function() { var orderIdInput = this.value; if (orderIdInput.length > 0) { var xhr = new XMLHttpRequest(); xhr.open("GET", "?inv_id=" + encodeURIComponent(orderIdInput), true); // Sends request to the same page xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { var suggestions = document.getElementById("order_suggestions"); suggestions.innerHTML = xhr.responseText; suggestions.style.display = 'block'; } }; xhr.send(); } else { document.getElementById("order_suggestions").style.display = 'none'; } }); // Handle clicking on suggestion items document.getElementById("order_suggestions").addEventListener("click", function(e) { if (e.target && e.target.classList.contains("dropdown-item")) { selectOrder(e.target); } }); // Add keyboard navigation for dropdown items document.getElementById("r_order_id").addEventListener("keydown", function(e) { var suggestions = document.getElementById("order_suggestions"); if (suggestions.style.display === 'block') { var items = suggestions.getElementsByClassName("dropdown-item"); if (e.key === "ArrowDown") { currentFocus++; addActive(items); } else if (e.key === "ArrowUp") { currentFocus--; addActive(items); } else if (e.key === "Enter") { e.preventDefault(); if (currentFocus > -1) { if (items[currentFocus]) { selectOrder(items[currentFocus]); } } } } }); function addActive(items) { if (!items) return false; removeActive(items); if (currentFocus >= items.length) currentFocus = 0; if (currentFocus < 0) currentFocus = items.length - 1; items[currentFocus].classList.add("active"); items[currentFocus].scrollIntoView({ block: "nearest" }); } function removeActive(items) { for (var i = 0; i < items.length; i++) { items[i].classList.remove("active"); } } function selectOrder(item) { var orderId = item.getAttribute('data-order-id'); document.getElementById("r_order_id").value = orderId; document.getElementById("order_suggestions").style.display = 'none'; } document.getElementById("customer_name").addEventListener("input", function() { var customerName = this.value; if (customerName.length > 0) { var xhr = new XMLHttpRequest(); xhr.open("GET", "?customer_name=" + customerName, true); xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { var suggestions = document.getElementById("customer_suggestions"); suggestions.innerHTML = xhr.responseText; suggestions.style.display = 'block'; } }; xhr.send(); } else { document.getElementById("customer_suggestions").style.display = 'none'; } }); document.getElementById("customer_suggestions").addEventListener("click", function(e) { if (e.target && e.target.classList.contains("dropdown-item")) { selectCustomer(e.target); } }); document.getElementById("customer_name").addEventListener("keydown", function(e) { var suggestions = document.getElementById("customer_suggestions"); if (suggestions.style.display === 'block') { var items = suggestions.getElementsByClassName("dropdown-item"); if (e.key === "ArrowDown") { currentFocus++; addActive(items); } else if (e.key === "ArrowUp") { currentFocus--; addActive(items); } else if (e.key === "Enter") { e.preventDefault(); if (currentFocus > -1) { if (items[currentFocus]) { selectCustomer(items[currentFocus]); } } } } }); function addActive(items) { if (!items) return false; removeActive(items); if (currentFocus >= items.length) currentFocus = 0; if (currentFocus < 0) currentFocus = items.length - 1; items[currentFocus].classList.add("active"); items[currentFocus].scrollIntoView({ block: "nearest" }); } function removeActive(items) { for (var i = 0; i < items.length; i++) { items[i].classList.remove("active"); } } function selectCustomer(item) { var customerName = item.getAttribute('data-customer-name'); var customerId = item.getAttribute('data-customer-id'); var customerPhone = item.getAttribute('data-customer-phone'); document.getElementById("customer_name").value = customerName; document.getElementById("customer_phone").value = customerPhone; document.getElementById("customer_id").value = customerId; document.getElementById("customer_suggestions").style.display = 'none'; } // Calculate the area based on length and piece inputs function calculateArea() { // Fetch the values of length and piece let length = parseFloat(document.getElementById("lengthInch").value) || 0; let piece = parseInt(document.getElementById("piece").value) || 0; // Calculate the area let area = length * piece; // Set the area and quantity fields document.getElementById("area").value = area.toFixed(2); document.getElementById("quantity").value = area.toFixed(2); // Recalculate the total price based on the new area/quantity calculateTotalPrice(); } // Event listeners for length and piece inputs to trigger area calculation document.getElementById("lengthInch").addEventListener("input", calculateArea); document.getElementById("piece").addEventListener("input", calculateArea); function calculateTotalPrice() { // Retrieve input values let quantity = parseFloat(document.getElementById("quantity").value) || 0; let pricePerUnit = parseFloat(document.getElementById("retail_price").value) || 0; let discountAmount = parseFloat(document.getElementById("percentage").value) || 0; // Now discount is in amount // Calculate the total price before discount let totalPrice = quantity * pricePerUnit; // Validate and ensure the discount is not greater than the total price let discount = (discountAmount >= 0 && discountAmount <= totalPrice) ? discountAmount : 0; // Calculate the final price after discount let discountedPrice = totalPrice - discount; // Update the input fields with the calculated prices document.getElementById("total_amount").value = totalPrice.toFixed(2); document.getElementById("trade_price").value = discountedPrice.toFixed(2); } document.getElementById("quantity").addEventListener("input", calculateTotalPrice); document.getElementById("retail_price").addEventListener("input", calculateTotalPrice); document.getElementById("percentage").addEventListener("input", calculateTotalPrice); document.getElementById("suggestions").addEventListener("click", function(e) { if (e.target && e.target.classList.contains("dropdown-item")) { selectProduct(e.target); } }); document.getElementById("productInput").addEventListener("input", function() { var query = this.value; if (query.length > 0) { var xhr = new XMLHttpRequest(); xhr.open("GET", "?query=" + query, true); xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) { var suggestions = document.getElementById("suggestions"); suggestions.innerHTML = xhr.responseText; suggestions.style.display = 'block'; } }; xhr.send(); } else { document.getElementById("suggestions").style.display = 'none'; } }); document.getElementById("productInput").addEventListener("keydown", function(e) { var suggestions = document.getElementById("suggestions"); if (suggestions.style.display === 'block') { var items = suggestions.getElementsByClassName("dropdown-item"); if (e.key === "ArrowDown") { currentFocus++; addActive(items); } else if (e.key === "ArrowUp") { currentFocus--; addActive(items); } else if (e.key === "Enter") { e.preventDefault(); if (currentFocus > -1) { if (items[currentFocus]) { selectProduct(items[currentFocus]); } } } } }); function addActive(items) { if (!items) return false; removeActive(items); if (currentFocus >= items.length) currentFocus = 0; if (currentFocus < 0) currentFocus = items.length - 1; items[currentFocus].classList.add("active"); items[currentFocus].scrollIntoView({ block: "nearest" }); } function removeActive(items) { for (var i = 0; i < items.length; i++) { items[i].classList.remove("active"); } } // Toggle fields based on the selected unit type function toggleFieldsBasedOnUnit(unit) { const lengthDiv = document.querySelector("#lengthInch").closest(".row"); const areaDiv = document.querySelector("#area").closest(".row"); const pieceDiv = document.querySelector("#piece").closest(".row"); if (unit === "meter") { lengthDiv.style.display = "none"; areaDiv.style.display = "none"; pieceDiv.style.display = "none"; // For piece unit, manually set quantity and trigger price calculation let meter = parseFloat(document.getElementById("meter").value) || 0; document.getElementById("quantity").value = meter; calculateTotalPrice(); } else if (unit === "yard" || unit === "piece") { lengthDiv.style.display = "block"; areaDiv.style.display = "flex"; pieceDiv.style.display = "flex"; } } function selectProduct(item) { var selectedProduct = item.textContent; var retailPrice = item.getAttribute('data-retail-price'); var productQuantity = item.getAttribute('data-product-quantity'); var tradePrice = item.getAttribute('data-trade-price'); var productId = item.getAttribute('data-product-id'); var supplier = item.getAttribute('data-supplier'); var company = item.getAttribute('data-company'); var productUnit = item.getAttribute('data-product-unit'); document.getElementById("productInput").value = selectedProduct; document.getElementById("retail_price").value = retailPrice; document.getElementById("productInput").setAttribute('data-product-id', productId); document.getElementById("productInput").setAttribute('data-product-quantity', productQuantity); document.getElementById("productInput").setAttribute('data-supplier', supplier); document.getElementById("productInput").setAttribute('data-company', company); document.getElementById("productInput").setAttribute('data-trade-price', tradePrice); document.getElementById("productInput").setAttribute('data-product-unit', productUnit); document.getElementById("suggestions").style.display = 'none'; toggleFieldsBasedOnUnit(productUnit); calculateTotalPrice(); } document.getElementById("makeEntry").addEventListener("click", function() { var productInput = document.getElementById("productInput"); var productId = productInput.getAttribute('data-product-id'); var productQuantity = parseFloat(document.getElementById("quantity").value) || 0; // Parse the quantity and ensure it's a number var supplier = productInput.getAttribute('data-supplier'); var company = productInput.getAttribute('data-company'); var description = productInput.value; var quantity = productQuantity; var length = document.getElementById("lengthInch").value; var area = document.getElementById("area").value; var piece = document.getElementById("piece").value; var pricePerUnit = parseFloat(document.getElementById("retail_price").value) || 0; var totalPrice = parseFloat(document.getElementById("total_amount").value) || 0; var discountPercentage = parseFloat(document.getElementById("percentage").value) || 0; var netAmount = parseFloat(document.getElementById("trade_price").value) || 0; var tradePrice = productInput.getAttribute('data-trade-price'); // Check if quantity is zero or negative before making the entry if (quantity <= 0) { alert("Product is not in stock. Cannot add entry."); return; // Stop execution if quantity is zero or negative } if (productId && description && quantity && pricePerUnit && totalPrice && netAmount) { var table = document.getElementById("productsTable"); var row = table.insertRow(); row.innerHTML = ` <td style="display:none;">${quantity}</td> <td>${productId}</td> <td style="color:#0A5064;font-weight:700px;">${description}</td> <td >${length}</td> <td>${area}</td> <td>${piece}</td> <td>${quantity}</td> <td>${pricePerUnit}</td> <td>${totalPrice}</td> <td>${discountPercentage || '0.00'}</td> <td>0</td> <td>${netAmount}</td> <td style="display:none;">${supplier}</td> <td style="display:none;">${company}</td> <td style="display:none;">${tradePrice}</td> <td><button class="btn btn-danger btn-sm delete-row">X</button></td> `; row.querySelector(".delete-row").addEventListener("click", function() { row.remove(); calculateTotalAmount(); }); calculateTotalAmount(); var rows = document.querySelectorAll("#productsTable tr:not(:first-child)"); var productData = []; rows.forEach(function(row) { var cells = row.querySelectorAll("td"); var product = { productId: cells[1].innerText, description: cells[2].innerText, length: cells[3].innerText, area: cells[4].innerText, piece: cells[5].innerText, quantity: cells[6].innerText, pricePerUnit: cells[7].innerText, totalPrice: cells[8].innerText, discountPercentage: cells[9].innerText, tax: cells[10].innerText, netAmount: cells[11].innerText, supplier: cells[12].innerText, company: cells[13].innerText, tradePrice: cells[14].innerText }; productData.push(product); }); document.getElementById("productData").value = JSON.stringify(productData); // Reset product fields after making an entry resetProductFields(); productInput.focus(); } else { alert("Some required fields are missing"); } }); function resetProductFields() { document.getElementById("productInput").value = ''; document.getElementById("quantity").value = ''; document.getElementById("retail_price").value = ''; document.getElementById("total_amount").value = ''; document.getElementById("percentage").value = ''; document.getElementById("trade_price").value = ''; document.getElementById("lengthInch").value = ''; document.getElementById("area").value = ''; document.getElementById("piece").value = ''; // Remove data attributes for the next product document.getElementById("productInput").removeAttribute('data-product-id'); document.getElementById("productInput").removeAttribute('data-product-quantity'); document.getElementById("productInput").removeAttribute('data-supplier'); document.getElementById("productInput").removeAttribute('data-company'); document.getElementById("productInput").removeAttribute('data-trade-price'); document.getElementById("productInput").removeAttribute('data-product-unit'); } function calculateTotalAmount() { var table = document.getElementById("productsTable"); var rows = table.getElementsByTagName("tr"); var total = 0; for (var i = 1; i < rows.length; i++) { var netAmountCell = rows[i].cells[11]; var netAmount = parseFloat(netAmountCell.textContent.trim()); if (!isNaN(netAmount)) { total += netAmount; } } var totalInput = document.getElementById("total-input"); totalInput.value = total.toFixed(2); updateDiscountAmount(); } function updateDiscountAmount() { var total = parseFloat(document.getElementById("total-input").value) || 0; var billAmount = parseFloat(document.getElementById("bill-amount").value) || 0; var discountAmountInput = document.getElementById("discount_amount"); var discountPercentInput = document.getElementById("discount_percent"); if (!isNaN(billAmount) && !isNaN(total)) { var discountAmount = total - billAmount; discountAmountInput.value = Math.round(discountAmount); if (total > 0) { var discountPercent = (discountAmount / total) * 100; discountPercentInput.value = discountPercent.toFixed(2); } else { discountPercentInput.value = "0.00"; } } } function calculateCashReturn() { var billAmount = parseFloat(document.getElementById("bill-amount").value) || 0; var cashReceived = parseFloat(document.getElementById("cash_received").value) || 0; var cashReturnInput = document.getElementById("cash_return"); if (!isNaN(billAmount) && !isNaN(cashReceived)) { var cashReturn = cashReceived - billAmount; cashReturnInput.value = cashReturn.toFixed(2); } } document.getElementById("bill-amount").addEventListener("input", function() { updateDiscountAmount(); }); document.getElementById("cash_received").addEventListener("input", function() { calculateCashReturn(); }); calculateTotalAmount(); }); </script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> </body> </html>