<?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'];
}
// Handle purchase addition
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["submit2"])) {
$product_id = $_POST["product_id"];
$product_name = $_POST["product_name"];
$company = $_POST["company"];
$length = $_POST["length"];
$width = $_POST["width"];
$lengthInch = $_POST["lengthfeet"];
$widthInch = $_POST["widthfeet"];
$square_feet = $_POST["sqarea"];
$quantity = $_POST["quantity"];
$total_quantity = $_POST["total_quantity"];
$retail_price = $_POST["retail_price"];
$percentage = $_POST["percentage_apply"];
$Extrapercentage = $_POST["percentage_extra"];
$trade_price = $_POST["trade_price"];
$total_amount = $_POST["total_amount"];
$supplier1 = isset($_POST["supplier1"]) ? $_POST["supplier1"] : ''; // Ensure supplier is set
$rack_no = $_POST["rack_no"];
$batch_no = $_POST["batch_no"];
$date_time = date("Y-m-d");
$login = $userName;
$role = $userRole;
$outlet = $outlet_name;
$address = $outlet_address;
$paid_by = $_POST["paid_by"];
$product_unit = $_POST["product_unit"];
mysqli_query($connection,"insert into purchases(
product_id,
product_name,
company,
length_feet,
width_feet,
length_inch,
width_inch,
square_feet,
quantity,
total_quantity,
retail_price,
percentage,
extra_percentage,
trade_price,
total_amount,
supplier_name,
rack_no,
batch_no,
paid_by,
product_unit,
date_time,
user_name,
user_role,
outlet_name,
outlet_address)
values(
'$product_id',
'$product_name',
'$company',
'$length',
'$width',
'$lengthInch',
'$widthInch',
'$square_feet',
'$quantity',
'$total_quantity',
'$retail_price',
'$percentage',
'$Extrapercentage',
'$trade_price',
'$total_amount',
'$supplier1',
'$rack_no',
'$batch_no',
'$paid_by',
'$product_unit',
'$date_time',
'$login',
'$role',
'$outlet',
'$address'
)");
// Update the products table
$update_query = "UPDATE products
SET total_quantity = total_quantity + $total_quantity,
trade_price = $trade_price,
retail_price = $retail_price
WHERE product_name = '$product_name'";
mysqli_query($connection, $update_query);
}
// Fetch distinct product names for live search
$sql12 = "SELECT DISTINCT product_name FROM products";
$result12 = mysqli_query($connection, $sql12);
$categories = [];
if (mysqli_num_rows($result12) > 0) {
while ($row12 = mysqli_fetch_assoc($result12)) {
$categories[] = $row12['product_name'];
}
}
// Check if a name is provided to fetch product details
if (isset($_GET['name'])) {
$name = $connection->real_escape_string($_GET['name']);
$sql = "SELECT * FROM products WHERE product_name = ?";
$stmt = $connection->prepare($sql);
$stmt->bind_param('s', $name);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
$productDetails = $result->fetch_assoc();
echo json_encode($productDetails);
} else {
echo json_encode(['error' => 'Product not found']);
}
$stmt->close();
exit; // Ensure no further processing occurs for AJAX requests
}
ob_end_flush();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>New Purchase</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 rel="stylesheet" href="css/custom_css.css" />
<!-- QRCode.js -->
<script src="https://cdn.rawgit.com/davidshimjs/qrcodejs/gh-pages/qrcode.min.js"></script>
</head>
<style>
#product-container-wrapper {
max-height: 700px; /* Adjust the maximum height as needed */
overflow-y: auto; /* Enable vertical scroll when content overflows */
}
@media (max-width: 880px) {
.col-4 {
width: 33.33% !important;
}
.fa-wifi {
display: none !important;
}
.col-6 {
width: 50% !important;
}
}
/* Custom styles for sidebar */ /* Custom styles for sidebar */
.sidebar {
width: 100px;
background: linear-gradient(360deg, #060606, #0A5064);
position: fixed;
bottom: 0;
top: 60px;
transition: transform 0.3s ease-in-out;
transform: translateX(0);
z-index: 1;
height: 100%;
border-radius: 0px;
transition: transform 0.3s ease-in-out, width 0.3s ease-in-out;
}.sidebar.hide {
transform: translateX(-100px); /* Move sidebar out of the viewport when it is hidden */
}
.sidebar .nav-item {
padding: 10px 0 ;
text-align: center;
position: relative;
font-size:12px;
}
.sidebar .nav-link {
color: #fff;
position: relative; /* Ensure icon and text are positioned relative to the nav link */
z-index: 2; /* Ensure the text and icon are above the hover background */
}
.sidebar .nav-link i {
margin-bottom: 5px; /* Adjust the margin of the icon */
}
/* Custom styles for hover effect */
.sidebar .nav-item:hover:after {
background-color: #fff;
content: '';
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 100%;
z-index: 1; /* Ensure the hover background is below the text and icon */
}
.sidebar .nav-item:hover .nav-link {
color: #0A5064;
}
/* Custom styles for divider */
.sidebar .nav-item:after {
content: "";
position: absolute;
left: 0;
bottom: 0;
width: 100%;
height: 1px;
background-color: #fff;
transition: height 0.3s ease-in-out; /* Transition effect for smooth animation */
}
/* Custom styles for header */ .header {
background: linear-gradient(270deg, #060606, #0A5064);
color: #fff;
padding: 10px;
position: fixed;
top: 0;
width: 100%;
z-index: 2;
height: 69px;
box-shadow: #FFF 2px 0px 0px 0px;
/* Ensure header appears above sidebar */
}
.header .navbar-toggler {
color: #fff;
}
.header .navbar-toggler-icon {
color: #fff; /* Set the color of the toggle button to white */
}
.header .navbar-toggler.white {
color: #fff !important; /* Ensure the toggle button is white */
}
.header .navbar-brand {
color: #fff; /* Set navbar brand text color to white */
}
.header .nav-item .nav-link {
color: #fff; /* Set nav link text color to white */
}
.main-content {
margin-top: 50px; /* Height of fixed header + padding */
margin-left: 100px; /* Width of sidebar */
padding-top: 30px; /* Height of fixed header */
}
/* Custom styles for search bar */
.search-container {
display: flex;
align-items: center;
width: 300px;
margin: 2px auto;
}
.search-input {
width: 100%;
padding: 10px 30px 10px 10px; /* Adjust padding to accommodate the icon */
border: 1px solid #ccc;
border-radius: 20px;
font-size: 16px;
}
.search-icon {
position: relative;
left: -25px; /* Adjust the position of the icon */
color: #aaa;
}
.search-icon i {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
.btn-dark
{
background:#0A5064;
color:#fff;
border: 1px solid #0A5064;
}
.btn-dark:hover{
background:#fff;
color:#0A5064;
border:1px solid #0A5064;
}
.bg-dark2{
background:#8A1218;
color:#fff;
}
.modal-content {
animation: modal-animation 0.5s;
}
@keyframes modal-animation {
from {
opacity: 0;
transform: scale(0.8);
}
to {
opacity: 1;
transform: scale(1);
}
}
label{font-size:12px; font-weight:600;}
#searchResults {
position: absolute;
background-color: #f9f9f9;
border: 1px solid #ddd;
max-height: 200px;
overflow-y: auto;
width: 92%;
display: none;
}
#searchResults div {
padding: 10px;
cursor: pointer;
}
#searchResults div:hover {
background-color: #f1f1f1;
}
.autocomplete-active {
background-color: #353535;
color:#fff;
}
</style>
<body>
<?php
?>
<?php include("common/hd.php"); ?>
<!-- Sidebar -->
<?php include("common/sd.php"); ?>
<div class="main-content">
<?php
// Fetch supplier data
$rec1236 = mysqli_query($connection, "SELECT * FROM supplier
WHERE user_name = '$userName'
AND user_role = '$userRole'
AND outlet_name = '$outlet_name'
AND outlet_address = '$outlet_address'");
?>
<div class="container">
<div class="row">
<div class="col-sm-3">
<h3 style="color:#212529;">Add Purchase</h3>
</div>
<div class="col-sm-1"></div>
<div class="col-sm-4">
<input type="text" id="searchInput" autocomplete="off" class="form-control" placeholder="Search Product">
<div id="searchResults"></div>
</div>
</div>
<div class="col-sm-1">
<a href="addproduct.php"><button type="button" class="btn btn-dark" style="float:left;"><i class="fa fa-arrow-left"></i></button></a>
</div>
<div class="col-sm-3">
</div>
</div>
<div class="container">
<div class="row">
<div class="col-sm-1"></div>
<div class="col-sm-5">
<form id="productForm" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
<div class="form-group">
<label>Product ID</label>
<input type="text" name="product_id" id="product_id" class="form-control" />
</div>
<div class="form-group">
<label>Product Name</label>
<input type="text" name="product_name" id="product_name" class="form-control" />
</div>
<div class="form-group">
<label>Company</label>
<input type="text" name="company" id="company" class="form-control" />
</div>
<div class="row">
<div class="col-sm-6 form-group">
<label>Length in Inch</label>
<input type="text" name="length" class="form-control in_height" placeholder="Length" />
</div>
<div class="form-group col-sm-6">
<label>Width in Inch</label>
<input type="text" name="width" class="form-control in_height" placeholder="Width" />
</div>
</div>
<div class="row">
<div class="col-sm-6 form-group">
<label>Length in Feets</label>
<input type="text" name="lengthfeet" class="form-control in_height" placeholder="Length" />
</div>
<div class="form-group col-sm-6">
<label>Width in Feets </label>
<input type="text" name="widthfeet" class="form-control in_height" placeholder="Width" />
</div>
</div>
<div class="form-group">
<label>Square / Feet Area</label>
<input type="text" name="sqarea" id="sqarea" class="form-control" readonly />
</div>
<div class="form-group">
<label>Quantity</label>
<input type="text" name="quantity" id="quantity" class="form-control" />
</div>
<div class="form-group">
<label>Total Quantity in Square Feet</label>
<input type="text" name="total_quantity" id="total_quantity" class="form-control" readonly />
</div>
</div>
<div class="col-sm-5">
<div class="form-group">
<input type="hidden" name="percentage_apply" id="percentage_apply" class="form-control" value="0" />
</div>
<div class="form-group">
<input type="hidden" name="percentage_extra" id="percentage_extra" class="form-control" value="0" />
</div>
<div class="form-group">
<label>Retail Price Per Sq/Feet</label>
<input type="text" name="retail_price" id="retail_price" class="form-control" />
</div>
<div class="form-group">
<label>Trade Price Per Sq/Feet</label>
<input type="text" name="trade_price" id="trade_price" class="form-control" />
</div>
<div class="form-group">
<label>Total Amount</label>
<input type="text" name="total_amount" id="total_amount" class="form-control" readonly />
</div>
<div class="form-group">
<label>Supplier</label>
<input type="text" name="supplier1" id="supplier" class="form-control" />
</div>
<div class="form-group">
<label>Rack No</label>
<input type="text" name="rack_no" id="rack_no" class="form-control" />
</div>
<div class="form-group">
<label>Batch No</label>
<input type="text" name="batch_no" id="batch_no" class="form-control" />
</div>
<hr />
<div class="row">
<div class=" col-sm-6 form-group">
<label>Method</label>
<select class="form-control" name="paid_by">
<option value="">Select</option>
<option value="cash">Cash</option>
<option value="credit">Credit</option>
<option value="other">Other</option>
</select>
</div>
<div class="form-group col-sm-6">
<label>Unit</label>
<select class=" form-control" name="product_unit">
<option value="">Select</option>
<option value="piece">Piece</option>
<option value="sq/ft">Sq/Ft</option>
</select>
</div>
</div>
<button class="btn btn-dark form-control" type="submit" name="submit2">Save Product</button>
</div>
</form>
</div>
<div class="col-sm-1">
</div>
</div>
</form>
</div>
</div>
<script>
document.addEventListener("DOMContentLoaded", function () {
const categories = <?php echo json_encode($categories); ?>;
const searchInput = document.getElementById('searchInput');
const searchResults = document.getElementById('searchResults');
let currentFocus = -1; // To keep track of the currently focused item
// Function to set z-index of searchResults
function setSearchResultsZIndex(zIndex) {
searchResults.style.zIndex = zIndex;
}
// Event listeners for input focus and blur
searchInput.addEventListener('focus', function () {
setSearchResultsZIndex(2); // Set higher z-index when input is focused
if (searchResults.innerHTML !== '') {
searchResults.style.display = 'block';
}
});
searchInput.addEventListener('blur', function () {
setSearchResultsZIndex(0); // Set lower z-index when input loses focus
setTimeout(() => {
searchResults.style.display = 'none';
}, 200); // Delay hiding dropdown to allow click event on dropdown items
});
searchInput.addEventListener('input', function () {
const query = this.value.trim().toLowerCase();
if (query === '') {
searchResults.style.display = 'none';
return;
}
const filteredCategories = categories.filter(category => category.toLowerCase().includes(query));
renderResults(filteredCategories);
});
searchResults.addEventListener('mousedown', function (e) {
if (e.target.tagName === 'DIV') {
searchInput.value = e.target.textContent;
fetchProductDetails(e.target.textContent);
searchResults.style.display = 'none';
}
});
searchInput.addEventListener('keydown', function (e) {
const items = searchResults.getElementsByTagName('div');
if (e.key === 'ArrowDown') {
e.preventDefault();
currentFocus++;
addActive(items);
ensureVisible(items[currentFocus]);
} else if (e.key === 'ArrowUp') {
e.preventDefault();
currentFocus--;
addActive(items);
ensureVisible(items[currentFocus]);
} else if (e.key === 'Enter') {
e.preventDefault();
if (currentFocus > -1) {
console.log("Enter pressed on item:", items[currentFocus].textContent);
searchInput.value = items[currentFocus].textContent;
fetchProductDetails(items[currentFocus].textContent);
searchResults.style.display = 'none';
}
}
});
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('autocomplete-active');
}
function removeActive(items) {
for (let i = 0; i < items.length; i++) {
items[i].classList.remove('autocomplete-active');
}
}
function ensureVisible(item) {
const dropdownRect = searchResults.getBoundingClientRect();
const itemRect = item.getBoundingClientRect();
if (itemRect.bottom > dropdownRect.bottom) {
searchResults.scrollTop = item.offsetTop + item.offsetHeight - searchResults.clientHeight;
} else if (itemRect.top < dropdownRect.top) {
searchResults.scrollTop = item.offsetTop;
}
}
function renderResults(results) {
let html = '';
results.forEach(result => {
html += `<div>${result}</div>`;
});
searchResults.innerHTML = html;
searchResults.style.display = 'block';
currentFocus = -1; // Reset focus index when new results are rendered
}
function fetchProductDetails(name) {
fetch(`<?php echo $_SERVER['PHP_SELF']; ?>?name=${encodeURIComponent(name)}`)
.then(response => response.json())
.then(data => {
if (data.error) {
alert(data.error);
} else {
populateForm(data);
}
})
.catch(error => {
console.error('Error fetching product details:', error);
});
}
function populateForm(data) {
document.getElementById('product_id').value = data.product_id || '';
document.getElementById('product_name').value = data.product_name || '';
document.getElementById('company').value = data.company || '';
document.getElementById('length').value = data.length || '';
document.getElementById('width').value = data.width || '';
document.getElementById('square_feet').value = data.square_feet || '';
document.getElementById('quantity').value = data.quantity || '';
document.getElementById('total_quantity').value = data.total_quantity || '';
document.getElementById('retail_price').value = data.retail_price || '';
document.getElementById('percentage').value = data.percentage || '';
document.getElementById('trade_price').value = data.trade_price || '';
document.getElementById('total_amount').value = data.total_amount || '';
document.getElementById('supplier').value = data.supplier || '';
document.getElementById('rack_no').value = data.rack_no || '';
document.getElementById('batch_no').value = data.batch_no || '';
}
});
function calculateSquareFeet() {
let lengthFeet = parseFloat(document.querySelector('input[name="lengthfeet"]').value) || 0;
let widthFeet = parseFloat(document.querySelector('input[name="widthfeet"]').value) || 0;
let lengthInch = parseFloat(document.querySelector('input[name="length"]').value) || 0;
let widthInch = parseFloat(document.querySelector('input[name="width"]').value) || 0;
let lengthInInches = lengthFeet > 0 ? lengthFeet * 12 : lengthInch;
let widthInInches = widthFeet > 0 ? widthFeet * 12 : widthInch;
if (lengthFeet > 0) {
document.querySelector('input[name="length"]').value = lengthInInches.toFixed(2);
}
if (widthFeet > 0) {
document.querySelector('input[name="width"]').value = widthInInches.toFixed(2);
}
let areaInSquareFeet = (lengthInInches / 12) * (widthInInches / 12);
document.querySelector('input[name="sqarea"]').value = areaInSquareFeet.toFixed(2);
calculateTotalQuantity();
}
function calculateTotalQuantity() {
let area = parseFloat(document.querySelector('input[name="sqarea"]').value) || 0;
let quantity = parseFloat(document.querySelector('input[name="quantity"]').value) || 0;
let totalQuantity = area * quantity;
document.querySelector('input[name="total_quantity"]').value = totalQuantity.toFixed(2);
calculateTotalAmount();
}
function calculateTradePrice() {
let trade_price = parseFloat(document.getElementById("trade_price").value) || 0;
calculateTotalAmount();
}
function calculateTotalAmount() {
let total_quantity = parseFloat(document.getElementById("total_quantity").value) || 0;
let trade_price = parseFloat(document.getElementById("trade_price").value) || 0;
if (total_quantity > 0 && trade_price > 0) {
let total_amount = (total_quantity * trade_price).toFixed(2);
document.getElementById("total_amount").value = total_amount;
} else {
document.getElementById("total_amount").value = '';
}
}
document.addEventListener('DOMContentLoaded', (event) => {
document.querySelector('input[name="length"]').addEventListener('input', calculateSquareFeet);
document.querySelector('input[name="width"]').addEventListener('input', calculateSquareFeet);
document.querySelector('input[name="lengthfeet"]').addEventListener('input', calculateSquareFeet);
document.querySelector('input[name="widthfeet"]').addEventListener('input', calculateSquareFeet);
document.querySelector('input[name="quantity"]').addEventListener('input', calculateTotalQuantity);
document.getElementById("trade_price").addEventListener('input', calculateTradePrice);
});
document.addEventListener("DOMContentLoaded", function () {
var sidebar = document.getElementById("sidebar");
var overlay = document.createElement("div");
overlay.classList.add("overlay");
document.body.appendChild(overlay);
function toggleSidebar() {
sidebar.classList.toggle("hide");
overlay.classList.toggle("hide");
var mainContent = document.querySelector(".main-content");
if (sidebar.classList.contains("hide")) {
mainContent.style.marginLeft = "0";
} else {
mainContent.style.marginLeft = "100px"; // Width of the sidebar
}
}
overlay.addEventListener("click", function () {
toggleSidebar();
});
// Add toggle functionality to navbar toggler
var navbarToggler = document.querySelector(".navbar-toggler");
navbarToggler.addEventListener("click", function () {
toggleSidebar();
});
// Automatically hide sidebar on all screen sizes
// sidebar.classList.add("hide");
// overlay.classList.add("hide");
// Add class to body to prevent scrolling when sidebar is open
// document.body.classList.add("noscroll");
// Check if screen size is larger than a certain threshold (e.g., 768px for desktop screens)
function checkScreenSize() {
if (window.innerWidth > 768) {
sidebar.classList.remove("hide");
overlay.classList.remove("hide");
} else {
sidebar.classList.add("hide");
overlay.classList.add("hide");
}
}
// Check screen size on initial load and whenever the window is resized
checkScreenSize();
window.addEventListener("resize", checkScreenSize);
});
// Function to toggle submenu
function toggleSubMenu(element) {
$(element).next('.sub-menu').slideToggle();
}
</script>
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<!-- Popper JS -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
</html>