You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

479 lines
15 KiB

<?php session_start();
include ("../settings.php");
include ("../language/$cfg_language");
$lang=new language();
//updating row for an item already in sale.
if(isset($_GET['update_item']))
{
$k=$_GET['update_item'];
$new_price=$_POST["price$k"];
$new_tax=$_POST["tax$k"];
$new_quantity=$_POST["quantity$k"];
$item_info=explode(' ',$_SESSION['items_in_sale'][$k]);
$item_id=$item_info[0];
$percentOff=$item_info[4];
$_SESSION['items_in_sale'][$k]=$item_id.' '.$new_price.' '.$new_tax.' '.$new_quantity.' '.$percentOff;
header("location: sale_ui.php");
}
if(isset($_GET['discount']))
{
$discount=$_POST['global_sale_discount'];
if(is_numeric($discount))
{
for($k=0;$k<count($_SESSION['items_in_sale']);$k++)
{
$item_info=explode(' ',$_SESSION['items_in_sale'][$k]);
$item_id=$item_info[0];
$new_price=$item_info[1]*(1-($discount/100));
$tax=$item_info[2];
$quantity=$item_info[3];
$percentOff=$item_info[4];
$new_price=number_format($new_price,2,'.', '');
$_SESSION['items_in_sale'][$k]=$item_id.' '.$new_price.' '.$tax.' '.$quantity.' '.$percentOff;
}
header("location: sale_ui.php?global_sale_discount=$discount");
}
}
include ("../classes/db_functions.php");
include ("../classes/security_functions.php");
include ("../classes/display.php");
$dbf=new db_functions($cfg_server,$cfg_username,$cfg_password,$cfg_database,$cfg_tableprefix,$cfg_theme,$lang);
$sec=new security_functions($dbf,'Sales Clerk',$lang);
$display=new display($dbf->conn,$cfg_theme,$cfg_currency_symbol,$lang);
$today = date("Y-m-d");
if(cfg_mustOpen && !$sec->isOpen()){
header("location: ../books/openshop.php");
exit();
}
if(isset($_POST['customer']))
{
if($cfg_numberForBarcode=="Row ID")
{
if($dbf->isValidCustomer($_POST['customer']))
{
$_SESSION['current_sale_customer_id']=$_POST['customer'];
}
}
else//try account_number
{
$id=$dbf->fieldToid($cfg_tableprefix.'customers','account_number',$_POST['customer']);
if($dbf->isValidCustomer($id))
{
$_SESSION['current_sale_customer_id']=$id;
}
else
{
echo "$lang->customerWithID/$lang->accountNumber ".$_POST['customer'].', '."$lang->isNotValid";
}
}
}
?>
<html>
<head>
<title>PHP Point Of Sale</title>
<script type="text/javascript" language="javascript">
<!--
function customerFocus()
{
document.scan_customer.customer.focus();
updateScanCustomerField();
}
function itemFocus()
{
document.scan_item.item.focus();
updateScanItemField();
}
function updateScanCustomerField()
{
document.scan_customer.customer.value=document.scan_customer.customer_list.value;
}
function updateScanItemField()
{
document.scan_item.item.value=document.scan_item.item_list.value;
}
//-->
</script>
</head>
<?php
if(isset($_SESSION['current_sale_customer_id']))
{
?>
<body onLoad="itemFocus();">
<?php
}
else
{
?>
<body onLoad="customerFocus();">
<?php
}
$table_bg=$display->sale_bg;
$items_table="$cfg_tableprefix".'items';
if(!$sec->isLoggedIn())
{
header ("location: ../login.php");
exit();
}
$display->displayTitle("$lang->newSale");
if(empty($_SESSION['current_sale_customer_id']))
{
$customers_table="$cfg_tableprefix".'customers';
if(isset($_POST['customer_search']) and $_POST['customer_search']!='')
{
$search=$_POST['customer_search'];
$_SESSION['current_customer_search']=$search;
$customer_result=mysql_query("SELECT first_name,last_name,account_number,id FROM $customers_table WHERE last_name like \"%$search%\" or first_name like \"%$search%\" or id =\"$search\" ORDER by last_name",$dbf->conn);
}
elseif(isset($_SESSION['current_customer_search']))
{
$search=$_SESSION['current_customer_search'];
$customer_result=mysql_query("SELECT first_name,last_name,account_number,id FROM $customers_table WHERE last_name like \"%$search%\" or first_name like \"%$search%\" or id =\"$search\" ORDER by last_name",$dbf->conn);
}
elseif($dbf->getNumRows($customers_table) >200)
{
$customer_result=mysql_query("SELECT first_name,last_name,account_number,id FROM $customers_table ORDER by last_name LIMIT 0,200",$dbf->conn);
}
else
{
$customer_result=mysql_query("SELECT first_name,last_name,account_number,id FROM $customers_table ORDER by last_name",$dbf->conn);
}
$customer_title=isset($_SESSION['current_customer_search']) ? "<b><font color='white'>$lang->selectCustomer: </font></b>":"<font color='white'>$lang->selectCustomer: </font>";
echo "<table align='center' cellpadding='2' cellspacing='2' bgcolor='$table_bg'>
<form name='select_customer' action='sale_ui.php' method='POST'>
<tr><td align='left'><font color='white'>$lang->findCustomer:</font>
<input type='text' size='8' name='customer_search'>
<input type='submit' value='Go'><a href='delete.php?action=customer_search'><font size='-1' color='white'>[$lang->clearSearch]</font></a>
</form></td></tr>
<form name='scan_customer' action='sale_ui.php' method='POST'>
<tr><td align='left'>$customer_title<select name='customer_list' onChange=\"updateScanCustomerField()\";>";
while($row=mysql_fetch_assoc($customer_result))
{
if($cfg_numberForBarcode=="Row ID")
{
$id=$row['id'];
}
elseif($cfg_numberForBarcode=="Account/Item Number")
{
$id=$row['account_number'];
}
if ($cfg_sellToNonMembers == "1"){
$display_name=$row['last_name'].', '.$row['first_name'];
echo "<option value=$id>$display_name</option></center>";
} else {
//IF config is member only sales, only list them.
$today = date('Y-m-d');
$membersinquery = "SELECT userID FROM visits WHERE DATE_FORMAT(intime,'%Y-%m-%d')='$today' AND endout IS NULL";
$membersinresult = mysql_query("$membersinquery",$dbf->conn);
while ($inarray = mysql_fetch_array($membersinresult)){
if ($id == $inarray[userID]) {
$display_name=$row['last_name'].', '.$row['first_name'];
echo "<option value=$id>$display_name</option></center>";
}
}
}
}
echo "</select>";
echo "</td><br><br>";
echo "<tr><td align='left'><center><small><font color='white'>($lang->scanInCustomer)</font></small></center>";
echo"<font color='white'>$lang->customerID / $lang->accountNumber: </font><input type='text' name='customer' size='6'>
<input type='submit'></td></tr>
</form>";
}
if(isset($_SESSION['current_sale_customer_id']))
{
if(isset($_POST['item']))
{
$item=$_POST['item'];
$discount='0%';
if($cfg_numberForBarcode=="Account/Item Number")
{
$item=$dbf->fieldToid($items_table,'item_number',$_POST['item']);
}
if($dbf->isValidItem($item))
{
if($dbf->isItemOnDiscount($item))
{
$discount=$dbf->getPercentDiscount($item).'%';
$itemPrice=$dbf->getDiscountedPrice($item);
}
else
{
$itemPrice=$dbf->idToField($items_table,'unit_price',$item);
}
$itemTax=$dbf->idToField($items_table,'tax_percent',$item);
$_SESSION['items_in_sale'][]=$item.' '.$itemPrice.' '.$itemTax.' '.'1'.' '.$discount;
}
else
{
echo "$lang->itemWithID/$lang->itemNumber ".$_POST['item'].', '."$lang->isNotValid";
}
}
if(isset($_SESSION['items_in_sale']))
{
$num_items=count($_SESSION['items_in_sale']);
}
else
{
$num_items=0;
}
$temp_item_name='';
$temp_item_id='';
$temp_quantity='';
$temp_price='';
$finalSubTotal=0;
$finalTax=0;
$finalTotal=0;
$totalItemsPurchased=0;
$item_info=array();
$customers_table="$cfg_tableprefix".'customers';
$order_customer_first_name=$dbf->idToField($customers_table,'first_name',$_SESSION['current_sale_customer_id']);
$order_customer_last_name=$dbf->idToField($customers_table,'last_name',$_SESSION['current_sale_customer_id']);
$order_customer_name=$order_customer_first_name.' '.$order_customer_last_name;
echo "<hr><center><a href=delete.php?action=all>[$lang->clearSale]</a></center>";
$items_table="$cfg_tableprefix".'items';
$brands_table="$cfg_tableprefix".'brands';
if(isset($_POST['item_search']) and $_POST['item_search']!='')
{
$search=$_POST['item_search'];
$_SESSION['current_item_search']=$search;
$item_result=mysql_query("SELECT item_name,unit_price,tax_percent,brand_id,item_number,quantity,id FROM $items_table WHERE item_name like \"%$search%\" or item_number= \"$search\" or id =\"$search\" ORDER by item_name",$dbf->conn);
}
elseif(isset($_SESSION['current_item_search']))
{
$search=$_SESSION['current_item_search'];
$item_result=mysql_query("SELECT item_name,unit_price,tax_percent,brand_id,item_number,quantity,id FROM $items_table WHERE item_name like \"%$search%\" or item_number= \"$search\" or id =\"$search\" ORDER by item_name",$dbf->conn);
}
elseif($dbf->getNumRows($items_table) >200)
{
$item_result=mysql_query("SELECT item_name,unit_price,tax_percent,brand_id,item_number,quantity,id FROM $items_table ORDER by item_name LIMIT 0,200",$dbf->conn);
}
else
{
$item_result=mysql_query("SELECT item_name,unit_price,tax_percent,brand_id,item_number,quantity,id FROM $items_table ORDER by item_name",$dbf->conn);
}
$item_title=isset($_SESSION['current_item_search']) ? "<b><font color='white'>$lang->selectItem: </font></b>":"<font color=white>$lang->selectItem: </font>";
echo "<form name='select_item' action='sale_ui.php' method='POST'>
<table border='0' bgcolor='$table_bg' align='center'>
<tr><td align='left'><font color='white'>$lang->findItem: <input type='text' size='8' name='item_search'></font>
<input type='submit' value='Go'><a href='delete.php?action=item_search'><font size='-1' color='white'>[$lang->clearSearch]</font></a></td></tr>";
echo "</form><tr><td><form name='scan_item' action='sale_ui.php' method='POST'>
$item_title <select name='item_list' onChange=\"updateScanItemField()\";>\n";
while($row=mysql_fetch_assoc($item_result))
{
if($cfg_numberForBarcode=="Row ID")
{
$id=$row['id'];
}
elseif($cfg_numberForBarcode=="Account/Item Number")
{
$id=$row['item_number'];
}
$quantity=$row['quantity'];
$brand_id=$row['brand_id'];
$brand_name=$dbf->idToField("$brands_table",'brand',"$brand_id");
$unit_price=$row['unit_price'];
$tax_percent=$row['tax_percent'];
$option_value=$id;
$display_item="$brand_name".'- '.$row['item_name'];
if($quantity <=0)
{
echo "<option value='$option_value'>$display_item ($lang->outOfStockWarn)</option>\n";
}
else
{
echo "<option value='$option_value'>$display_item</option>\n";
}
}
echo "</select></td></tr>
<tr><td><center><small><font color='white'>($lang->scanInItem)</font></small></center>
<font color='white'>$lang->itemID / $lang->itemNumber: </font><input type='text' name='item' size='6'>
<input type='submit'></form></td></tr>
<center>$lang->orderFor: <b>$order_customer_name</b></center><br>
</table>";
echo "<h3 align='center'>$lang->shoppingCart</h3>
<form name='add_sale' action='addsale.php' method='POST'>";
echo "<table border='0' bgcolor='$table_bg' cellspacing='0' cellpadding='2' align='center'>
<tr><th><font color=CCCCCC>$lang->remove</font></th>
<th><font color=CCCCCC>$lang->itemName</font></th>
<th><font color=CCCCCC>$lang->unitPrice</font></th>
<th><font color=CCCCCC>$lang->tax %</font></th>
<th><font color=CCCCCC>$lang->quantity</font></th>
<th><font color=CCCCCC>$lang->extendedPrice</font></th>
<th><font color=CCCCCC>$lang->update</font></th>
<th><font color=CCCCCC>$lang->percentOff</font></th>
</tr>";
for($k=0;$k<$num_items;$k++)
{
$item_info=explode(' ',$_SESSION['items_in_sale'][$k]);
$temp_item_id=$item_info[0];
$temp_item_name=$dbf->idToField($items_table,'item_name',$temp_item_id);
$temp_price=$item_info[1];
$temp_tax=$item_info[2];
$temp_quantity=$item_info[3];
$temp_discount=$item_info[4];
$subTotal=$temp_price*$temp_quantity;
$tax=$subTotal*($temp_tax/100);
$rowTotal=$subTotal+$tax;
$rowTotal=number_format($rowTotal,2,'.', '');
$finalSubTotal+=$subTotal;
$finalTax+=$tax;
$finalTotal+=$rowTotal;
$totalItemsPurchased+=$temp_quantity;
echo "<tr><td align='center'><a href=delete.php?action=item&pos=$k><font color=white>[$lang->delete]</font></a></td>
<td align='center'><font color='white'><b>$temp_item_name</b></font></td>
<td align='center'><input type=text name='price$k' value='$temp_price' size='8'></td>
<td align='center'><input type=text name='tax$k' value='$temp_tax' size='3'></td>
<td align='center'><input type=text name='quantity$k' value='$temp_quantity' size='3'></td>
<td align='center'><font color='white'><b>$cfg_currency_symbol$rowTotal</b></font></td>
<td align='center'><input type='button' name='updateQuantity$k' value='$lang->update' onclick=\"document.add_sale.action='sale_ui.php?update_item=$k';document.add_sale.submit();\"></td>
<td align='center'><font color='white'><b>$temp_discount $lang->percentOff</b></font></td>
<input type='hidden' name='item_id$k' value='$temp_item_id'>
</tr>";
}
$finalSubTotal=number_format($finalSubTotal,2,'.', '');
$finalTax=number_format($finalTax,2,'.', '');
$finalTotal=number_format($finalTotal,2,'.', '');
echo '</table>';
echo "<table align='center' ><br>
<tr><td align='left'>$lang->saleSubTotal: $cfg_currency_symbol$finalSubTotal</td></tr>
<tr><td align='left'>$lang->tax: $cfg_currency_symbol$finalTax</td></tr>";
if(isset($_GET['global_sale_discount']))
{
$discount=$_GET['global_sale_discount'];
echo"<tr><td align='left'>$discount% $lang->percentOff</td></tr>";
}
echo"<tr><td align='left'><b>$lang->saleTotalCost: $cfg_currency_symbol$finalTotal</b></td></tr>";
echo'</table>';
echo "<br>
<table align='center' bgcolor='$table_bg'><br>
<tr><td align='left'><font color='white'>$lang->globalSaleDiscount</font></td>
<td align='left'><input type='text' name='global_sale_discount' size='3'></td>
<td><input type='button' name='updateQuantity$k' value='$lang->update' onclick=\"document.add_sale.action='sale_ui.php?discount=true';document.add_sale.submit();\"></td></tr>
</table><br>";
echo "<br><table border='0' bgcolor='$table_bg' align='center'>
<tr>
<td>
<font color='white'>$lang->paidWith:</font>
</td>
<td>
<select name='paid_with'>
<option value='$lang->cash'>$lang->cash</option>
<option value='$lang->check'>$lang->check</option>
<option value='$lang->credit'>$lang->credit</option>
<option value='$lang->giftCertificate'>$lang->giftCertificate</option>
<option value='$lang->account'>$lang->account</option>
<option value='$lang->other'>$lang->other</option>
</select>
<font color='white'>$lang->amtTendered:<input type='text' name='amt_tendered'></font>
</td>
</tr>
<tr>
<td>
<font color='white'>$lang->saleComment:</font>
</td>
<td>
<input type=text name=comment size=25>
</td>
</tr>
</table>
<br>
<input type=hidden name='totalItemsPurchased' value='$totalItemsPurchased'>
<input type=hidden name='totalTax' value='$finalTax'>
<input type=hidden name='finalTotal' value='$finalTotal'>
<center><input type='submit' value='Add Sale'></center></form>";
}
$dbf->closeDBlink();
?>
</body>
</html>