
PHP Point of Sale v9.0
Installation and User Guide
Installation and Configuration
Installing and Configuring Apache/IIS, PHP and MySQL
Installing and Configuring PHP Point of Sale>
PHP Point of Sale Installation Page
Problems connecting to the database
Permission denied / settings.php is not writable
All of the image links are broken.
Upgrading from a Previous Version of PHP Point of Sale
Logging Into PHP Point of Sale
Creating and Printing Item Barcode Labels Using Microsoft Word
Using Barcodes to Identify Customers
Applying Extra Discounts at Time of Sale
Completing a Sales Transaction
Modifying a Sale After Completion
Restoring a Database from Backup
PHP Point of Sale (POS) is a web-based point of sale system designed to help small businesses keep track of customers, sales and inventory. The program works especially well for businesses that use cash, check, or account numbers for their sales.
PHP Point of Sale is a stable, mature product with a relatively active developer and user community. This makes it an attractive choice for designers and integrators who are looking for a solid, tested platform upon which to build their own custom solutions. It can even be integrated with barcode scanners and touch-screen displays. PHP Point of Sale is available in English, French and Spanish language versions.
PHP Point of Sale was developed by Chris Muench, who remains the primary developer, along with a handful of outside contributors. As a student at the Rochester Institute of Technology in New York, the original inspiration behind this project was to gain knowledge about PHP and MySQL. That particular goal was reached some time ago, and today’s focus is on adding continual improvements to the product.
This guide was designed, written and illustrated by extendoc. If you’re looking for ways to improve the quality your own documentation efforts, please visit my website at www.extendoc.com for useful tips and information. I also provide a full selection of technical writing, illustration and publishing services on a freelance basis. If you have any comments or suggestions about this guide, please drop me a line at feedback@extendoc.com.
PHP Point of Sale is a flexible product which can be deployed in several different ways, depending on your requirements:
Having problems with installation or integration? Visit these online resources for help:
PHP Point of Sale requires the following components:
These components can be installed on a workstation/laptop, a locally-deployed central server, or a hosted Internet-connected web server, depending on your needs.
The procedure for installation and configuration of these packages varies considerably by your choice of platform. Therefore, it is not practical to provide a deployment tutorial for them in this document. For detailed installation instructions, we invite you to review the following online resources:
Once you’ve taken these steps, navigate to the following URL with your web browser. The URL you type (or paste) into your browser address bar depends on how, and where, you have deployed PHP Point of Sale. For remote web servers (like those offered through web hosting and co-location services) your URL will probably look like this:
http://www.yourcompany.com/path_to_php_point_of_sale/install/index.php
For local environments, where PHP Point of Sale is installed on a Local Area Network (LAN) for use by multiple “peer” or “client” workstations, you’d probably use something like this:
http://ip_address_of_php_pos_computer/path_to_php_point_of_sale/install/index.php
For single-user installations, where the users and the server are located on the same physical computer, you would probably use something like this:
http://localhost/path_to_php_point_of_sale/install/index.php
If you’re using a remote web hosting service, your URL will probably look like this:
http://yourcompany.com/Path_To_Point_Of_Sale/install/index.php
If you’ve properly deployed PHP Point of Sale on your web server and navigated to the correct installation URL, you’ll see a Language Select page. Choose the appropriate language from the drop-down box, and click the Submit Query button to proceed to the main installation page.
The PHP Point of Sale Installation page contains a series of fields which should be filled in as follows:
Company Name* – This is the name that will appear on reports, receipts and more.
Address - Enter your mailing address here.
Phone Number* - Telephone Number – don’t forget to include your area code.
E-Mail – Enter your customer service email address here.
Fax - Your FAX number, in a suitable format.
Website - Your web address, in the format http://www.yourcompany.com.
Other - This field holds optional user-defined information.
Database Server* - The IP address or hostname of your database server. In most cases, you’ll be running the web server and database server on the same physical machine, so localhost will do.
Database Name* - The name of the MySQL PHP Point of Sale Database.
Database Username* - The MySQL user name which is associated with your PHP Point of Sale database. In many cases, this will be root, although root is actually not an ideal account to use from a security perspective.
Database Password* - The password associated with the MySQL user name which is supplied above.
Default Tax Rate* - An integer value (0 through 100[3]) representing the standard tax rate to apply to sales activity within PHP Point of Sale.
Currency Symbol* - The symbol to use for currency. This symbol or text will be placed in front of currency values. In the United States and Canada, you can use a dollar sign ($). Use whatever symbol or prefix fits your currency best.
Theme* - Choose the default Big Blue theme, or the more streamlined Serious theme.
Table Prefix - Use this option only if you want to add a prefix to the MySQL tables created by PHP Point of Sale. This is useful if you’re deploying PHP Point of Sale within an existing MySQL database, and you want to ensure that no conflicts between table names arise[4]. If you do not need table prefixes, leave this field blank.
Property to use when scanning barcode at sale* - When you scan a barcode on an item or customer account card, PHP Point of Sale looks up the matching value that is specified on it. If you wish to use the customer account number or item number for your lookup fields, choose the Account Number/Item Number option. Otherwise, specify the RowID option, which uses the auto-incrementing value MySQL uses internally to track items and accounts.
Language* - PHP Point of Sale is available in English, French and Spanish languages. Choose your desired language here. Changes to your language selection will take place after the form is submitted.
* This field is required.
Once you’ve made the appropriate entries on the PHP Point of Sale Installation page, click the Install button to compete your installation. If you’ve supplied correct setup information, PHP Point of Sale will be installed automatically, and you’ll see the following screen:

Figure 1 – A successful installation.
If incorrect information is supplied, you may be returned to the Installation page to provide the correct data.
Installation of PHP Point of Sale is relatively straightforward. However, before you bolt away screaming from the room, check this list.
On Windows systems, take the following steps to ensure that settings.php is writable:
On Linux systems, you’ll need to use the chmod command on the settings.php file. First, though, you’ll need to find the location of the settings.php file – the path to this file can be very different depending on your Linux distribution and specific configuration. However, you can probably find the file using the following command:
locate settings.php
Once you’ve found the correct path, issue the following command:
chmod -v 655 /path_to_settings_file/settings.php
to change the permissions.
Is your /images/ folder mapped to a different location? Some Linux Apache configurations use symlinks to map the /images/ folder to a different location in the file system.
To upgrade from a previous version of PHP Point of Sale, take the following steps:
http://yourwebserver.com/Path_To_Point_Of_Sale/upgrade/index.php
PHP Point of Sale is designed to be easy to use, with minimal training requirements. The following section details instructions for day to day management and usage.
PHP Point of Sale is a web-based application, so you’ll access it with a web browser, such as Firefox or Internet Explorer. The URL you type (or paste) into your browser address bar depends on how and where you have deployed PHP Point of Sale.
For remote web servers (like those offered through web hosting and co-location services) your URL will probably look like this:
http://www.yourcompany.com/path_to_php_point_of_sale/
For local environments, where PHP Point of Sale is installed on a Local Area Network (LAN) for use by multiple “peer” or “client” workstations, you’d probably use something like this:
http://ip_address_of_php_pos_computer/path_to_php_point_of_sale/
For single-user installations, where the users and the server are located on the same physical computer, you would probably use something like this:
http://localhost/path_to_php_point_of_sale/
Once you successfully log in, you’ll be taken to the PHP Point of Sale Home Screen. The Home Screen is a central jumping point for just about any task you’ll need to accomplish in the system. It’s located in the top navigation toolbar:

Figure 2 – PHP Point of Sale Navigation Toolbar
PHP Point of Sale user accounts are used by sales staff, managers and administrators. For security and reporting reasons, it’s a good idea to have separate user accounts for every individual who will need to use PHP Point of Sale. For example, sales activity reports can be organized by user account, so you can easily see your top sales performers if each person has their own unique account.
When you first install PHP Point of Sale, one user account is created automatically:
Username: admin
Password: pointofsale
Important: You can, and should, change the admin password immediately. See Modifying a User Account below for instructions on how to change passwords.
Every user account has a security level associated with it, known in PHP Point of Sale as an account type. The following account types are available:
To add a new user account to your PHP Point of Sale system, take the following steps:
To make changes to a user account, including changing the password associated with a user account, take the following steps:
You can only remove a user account if there are no sales associated with it. Once sales activity has been entered for a user account, PHP Point of Sale will not allow you to delete it, because the account information is needed for reporting purposes.
The best way to handle old or expired user accounts (for example, if one of your staff members leaves for another job) is to simply reset the password on the account to something that is unknown to the former user, as well as other staff members. This preserves the security of your PHP Point of Sale system while maintaining data integrity for reporting.
To remove a user account, take the following steps:
Before you can sell items in any retail setting, you first need a supplier of goods, or more than one. Consequently, all items in PHP Point of Sale must have a Supplier associated with them - even if that Supplier is you.
Your first order of business, before any Items are added to your database, is to add one or more Suppliers.
To add a new Supplier, take the following steps:
To make changes to an existing Supplier, take the following steps:
· If you change your mind and do not wish to save, simply click the Home button on the top toolbar.
You can only remove a Supplier if there are no sales associated with it. Once sales activity has been entered for Items provided by a given Supplier, PHP Point of Sale will not allow you to delete it, because the information is needed for reporting purposes.
To remove a Supplier, take the following steps:
All Items in PHP Point of Sale are associated with a Brand. Therefore, you’ll also need to add at least one Brand before you can add Items.
To add a new Brand, take the following steps:
To make changes to an existing Brand, take the following steps:
· If you change your mind and do not wish to save, simply click the Home button on the top toolbar.
You can only remove a Brand if there are no sales associated with it. Once sales activity has been entered for Items of a particular Brand, PHP Point of Sale will not allow you to delete it, because the information is needed for reporting purposes.
To remove a Brand, take the following steps:
All Items in PHP Point of Sale must belong to an Item Category. You’ll therefore need at least one Category before you can add Items to the PHP Point of Sale database.
To add a new Category, take the following steps:
To make changes to an existing Category, take the following steps:
· If you change your mind and do not wish to save, simply click the Home button on the top toolbar.
You can only remove a Category if there are no sales or items associated with it. To remove a Category, take the following steps:
Items in PHP Point of Sale are often referred to as SKUs (pronounced “skews”) in retail lingo. Essentially, an Item is a unique “entity” for sales reporting purposes.
The way you classify unique items depends on the level of detail you want to see in your sales reports. For example, a plain t-shirt sells for $12.95 regardless of whether it is red, blue or orange. If you wanted to track individual sales of red, blue and orange plain t-shirts, you should enter 3 separate Items. If, however, you wish only to track plain t-shirt sales regardless of their color, you need to enter only a single Item in the PHP Point of Sale database.
Important: Before you can add items to your PHP Point of Sale database, you must first create at least one Brand, at least one Category, and at least one Supplier.
Once you have at least one Supplier, Category and Brand, you can add an Item to the PHP Point of Sale database. To add a new item, take the following steps:
Item Name: A friendly name for the item. This name appears on invoices and receipts.
Description: The description field can contain any information you like. It is also printed on invoices and receipts.
Item Number: If you have an existing coding or numbering scheme, record that value here. You can use this code in combination with the barcode scanning and printing capabilities built into PHP Point of Sale[5].
Brand: The associated Brand.
Category: The Category to which the item belongs.
Supplier: The Supplier which provides the item to you.
Buying Price: The per-unit price paid for each item from the Supplier.
Selling Price: The standard retail selling price of the Item. This price is subject to any Discounts which are subsequently applied to the item.
Tax (%): A numeric value indicating the tax rate for the specific item. The value specified in this field overrides the global tax rate[6].
Supplier Catalogue #: Most wholesalers or suppliers have their own item codes and part numbers. Use this field to record those values for convenient re-ordering of stock.
Quantity in Stock: A numeric value indicating the current unit quantity in stock.
Reorder Level: A numeric value representing the quantity at which a stock replenishment order should be triggered.
To modify an existing Item, take the following steps:
You can only delete an Item if there are no sales associated with it. To delete an Item, take the following steps:
When you want to run a special sale or promotion, you can use PHP Point of Sale to apply discounts to certain items in your store. This way, you can leave the original pricing intact, to be restored once the sale or promotion is over.
To apply a discount to an Item, do the following:
You may implement many kinds of Discounts for various reasons. PHP Point of Sale allows you to manage all of your Discounts from a single location. You can adjust discount levels or remove discounts altogether:
To delete a previously configured Discount, click the Delete link next to the appropriate Discount. To make changes to a previously configured Discount, click the Update link next to the appropriate Discount and make your changes.
PHP Point of Sale can create custom barcodes for each item in your store. You can use these barcodes to make stickers and labels, which can then be applied directly to your products and/or the shelving where product is displayed:

Figure 3 – Sample Barcode
To see a complete barcode summary for all Items in your store, do the following:
The following instructions should work with Microsoft Word versions XP, 2002, or 2003. You can use Word to create label sheets with multiple copies of the same label (for individual products), or with multiple unique labels on a single sheet (for catalogues or shelving).
All sales transactions in PHP Point of Sale are associated with a particular customer account. If you’re not interested in tracking customers, you can simply create a single ‘default’ customer account to be re-used for all transactions[7].
To add a new Customer to PHP Point of Sale, take the following steps:
To modify a customer’s information (for example, if your customer moves to a new address) take the following steps:
You cannot delete any customer who has previously purchased an item, because this information is needed for reporting purposes. If, however, there is no sales activity associated with a particular customer, and you wish to delete the account, take the following steps:
You can use PHP Point of Sale’s bar-coding features to create membership cards and account cards, which can be scanned at each sales instance to quickly identify the customer without the need for manual lookups.
To create a master barcode list for all of your customers, click Customers in the top toolbar, followed by the Customers Barcode Sheet link. See Creating and Printing Item Barcode Labels Using Microsoft Word on page 21 for barcode printing tips.
Once you have deployed PHP Point of Sale and set up your items, categories, and brands, you’ll (hopefully) spend most of your time processing sales transactions.
To begin a new sales transaction, click the Sales button in the top toolbar, followed by the Start a New Sale link.
The first step in the sales process is to identify your customer. You can locate a customer in any one of three different ways:
Choose the method that works best for you. If you’ve used the PHP Point of Sale barcode features to create Customer account cards, you’ll probably find this method the fastest.
Once you’ve located the correct Customer, click the Submit Query button on the New Sale screen. This action begins a sales session for that customer.
When you begin a new sales transaction by selecting a Customer, you create an active sales session within the PHP Point of Sale system. This means that if you abandon the sales entry process at any point (say, for example, to look up information on a different Item that your customer is asking about) you can easily return and pick up where you left off, without having to re-enter customer information or lose the contents of the existing shopping cart.
Once you’ve selected a customer, you can add Items to their virtual shopping cart. This can be done in one of three different ways:
Once you’ve selected an Item, PHP Point of Sale adds it to the customer’s virtual shopping cart. You can adjust the quantity afterwards, by updating the Quantity field for the desired Item, then clicking the Update button to recalculate the shopping cart totals.
To remove Items from the shopping cart, click the Remove link next to the Item to be removed.
You can easily add extra discounting to individual items – or even the entire shopping cart – at any point during the sales process. To discount an Item, you can adjust the Unit Price field next to the associated item. To apply a global discount, enter an appropriate value (1 to 99) in the Global Sale Discount field.
Cash is King, as they say. The sales transaction is completed when money changes hands. These monies can take the form of cash, check, credit card[8], account debit or gift card.
Choose the appropriate payment method in the Paid With, and enter the amount received from the customer in the Amt Tendered field. You can also record comments or miscellaneous information in the Sale Comment field. Once you’ve completed these entries, click the Add Sale button to “post” the sale permanently to the PHP Point of Sale System.
For many transactions, it is not feasible, or even possible, to collect detailed customer information. In these cases, you can create a special Cash Customer account, to be used as the default selection in situations where customer data is not required.
You may find yourself needing to abort a sale that is halfway finished. Perhaps your customer forgot their wallet or purse, or maybe they simply changed their mind about the purchase. In any case, you need to clear the sales session so that new sales can be entered for a different customer.
At any point during the sales process, you can click the Clear Sale link at the top of the Shopping Cart window. This will clear the sales session, including customer information and the contents of the shopping cart.
It is possible to modify the particulars of a sale after it has already been completed, and even delete (void) a sales transaction completely. Normally, this practice is not recommended because of the potential for fraud. This function is also restricted to users with Admin privileges.
PHP Point of Sale provides over a dozen built-in reports. Choose the report you wish to run by clicking Reports in the top toolbar.
This report provides a complete sales summary, organized by Brand name. Available time ranges are Today, Yesterday, Last 7 Days, This Month, Last Month, This Year and All Time. Before tax and after tax sales figures are included.
This report provides a complete sales summary, organized by Category name. Available time ranges are Today, Yesterday, Last 7 Days, This Month, Last Month, This Year and All Time. Before tax and after tax sales figures are included.
This report provides a complete sales summary, organized by Customer. Available time ranges are Today, Yesterday, Last 7 Days, This Month, Last Month, This Year and All Time. Before tax and after tax sales figures are included.
This report provides a complete sales summary, organized by Employee. Available time ranges are Today, Yesterday, Last 7 Days, This Month, Last Month, This Year and All Time. Before tax and after tax sales figures are included.
This report provides a complete sales summary, organized by Item. Available time ranges are Today, Yesterday, Last 7 Days, This Month, Last Month, This Year and All Time. Before tax and after tax sales figures are included, as well as individual unit sales and subtotals for each Item.
The Brand Report allows you to focus on the sales performance of a specific individual Brand over a given time interval. Choose the Brand you wish to use in your report, and then select the desired time interval. Available time ranges are Today, Yesterday, Last 7 Days, This Month, Last Month, This Year and All Time. Before tax and after tax sales figures are included. You can also use the Find Brand search box to locate a Brand by name.
The Category Report allows you to focus on the sales performance of a specific individual Category over a given time interval. Choose the Category you wish to use in your report, and then select the desired time interval. Available time ranges are Today, Yesterday, Last 7 Days, This Month, Last Month, This Year and All Time. Before tax and after tax sales figures are included. You can also use the Find Category rand search box to locate a Category by name.
The Customer Report allows you to focus on the sales performance of a specific individual Customer over a given time interval. Choose the Customer you wish to use in your report, and then select the desired time interval. Available time ranges are Today, Yesterday, Last 7 Days, This Month, Last Month, This Year and All Time. Before tax and after tax sales figures are included. You can also use the Find Customer search box to locate a Customer by name.
The Daily Report is an up-to-the moment summary of sales activity for today’s date. You can also see details for individual sales by clicking on the Show Sale Details link next to each line item.
The Date Range Report allows you to produce a complete sales summary between the specified starting and ending dates.
Before tax and after tax sales figures are included. You can also see details for individual sales by clicking on the Show Sale Details link next to each line item.
The Employee Report allows you to focus on the sales performance of a specific individual Employee over a given time interval. Choose the Employee you wish to use in your report, and then select the desired time interval. Available time ranges are Today, Yesterday, Last 7 Days, This Month, Last Month, This Year and All Time.
Before tax and after tax sales figures are included. You can also see details for individual sales by clicking on the Show Sale Details link next to each line item.
The Item Report allows you to focus on the sales performance of a specific individual Item over a given time interval. Choose the Item you wish to use in your report, and then select the desired time interval. Available time ranges are Today, Yesterday, Last 7 Days, This Month, Last Month, This Year and All Time. Before tax and after tax sales figures are included.
The Profit Report shows sales margins over the specified time interval. This report compares the selling price of each item against its cost. Available time ranges are Today, Yesterday, Last 7 Days, This Month, Last Month, This Year and All Time. Before tax and after tax sales figures are included.
The Tax Report provides a summary of tax dollars collected on sales over a given time interval. This report can be used to calculate the amount of tax which must be remitted to the appropriate government tax collection agency, based on the tax rules you’ve specified in each item’s configuration. Available time ranges are Today, Yesterday, Last 7 Days, This Month, Last Month, This Year and All Time.
It’s extremely important to make regular backups of your database. In the event of a hardware or software error, it is possible that you could lose access to the data stored in your PHP Point of Sale database. In these cases, you’ll need backup data to restore to your rebuilt system. To perform an up-to-date backup, do the following:
If your PHP Point of Sale system is deployed on a Linux host, a typical backup file resides at the following local path (although the location may vary depending on your Apache configuration):
/home/phppoint/public_html/path_to_php_pos/backups/.db_backup.phppoint_demo2.2006-01-22.sql.gz
On a Windows host, backup files are saved in the following location/format (with a default IIS installation – your location may vary):
C:\inetpub\wwwroot\path_to_php_pos\backups\.db_backup.phppoint_demo2.2006-01-22.sql.gz
Important: Backup files are stored on the same computer as your live application. This means that if your hard drive fails, you’ll lose your production data and your backups too. It is critically important to place a copy of your backup files in a safe location, completely separate from your production system. CD burners are quite cheap nowadays – archiving to CD is probably the best option for most PHP Point of Sale users. This also means that your backup files could be accessible to malicious users who can download your customer database and steal personal information. Once you complete a backup, it’s highly recommended that you download the file to a separate computer and delete the original backup file from your production PHP Point of Sale system.
To restore a database from a backup file, extract the contents of zip archive to a folder on your PHP Point of Sale system.
On Linux systems, you can restore the backup file from the command line, using the following syntax:
mysql databasename < db_backup.phppoint_demo2.YYYY-MM-DD.sql
where databasename is the name of your PHP Point of Sale database, YYYY is the year, MM is the month and DD is the day of the backup file.
This procedure creates a brand new PHP Point of Sale database, and repopulates it with all of your historical data. It’s a perfect replica of your PHP Point of Sale system at the time of the backup.
PHP Point of Sale covers all of the basics, and can easily be used as a springboard for rapid completion of more complex projects. It’s a relatively simple application that is well documented.
According to its website, osCommerce “is the leading Open Source online shop e-commerce solution that is available for free under the GNU General Public License. It features a rich set of out-of-the-box online shopping cart functionality that allows store owners to setup, run, and maintain their online stores with minimum effort and with no costs, license fees, or limitations involved.”
PHP Point of Sale now integrates with osCommerce [http://www.oscommerce.com] and uses its products tables for items in a sale. If you have a web store and a point of sale location, you can now use the items from osCommerce right within the pos. Inventory is automatically updated.
To download the osCommerce version of PHP Point of sale, visit the following link: http://www.phppointofsale.com/downloads.php.
The following tables provide a detailed overview of the MySQL table structure used by PHP Point of Sale:
| Table: brands | |||||
|---|---|---|---|---|---|
| Field | Type | Null | Key | Default Val | Extra |
| id | int(8) | PRI | NULL | auto_increment | |
| brand> | varchar(30) | ||||
| Table: categories | |||||
|---|---|---|---|---|---|
| Field | Type | Null | Key | Default Val | Extra |
| id | int(8) | PRI | NULL | auto_increment> | |
| category | varchar(30) | ||||
| Table: customers | |||||
|---|---|---|---|---|---|
| Field | Type | Null | Key | Default Val | Extra |
| id | int(8) | PRI | NULL | auto_increment | |
| first_name | varchar(75) | ||||
| last_name | varchar(75) | ||||
| account_number | varchar(10) | ||||
| phone_number | varchar(25) | ||||
| varchar(40) | |||||
| street_address | varchar(150) | ||||
| comments | Blob | ||||
| Table: discounts | |||||
|---|---|---|---|---|---|
| Field | Type | Null | Key | Default Val | Extra |
| id | int(8) | PRI | NULL | auto_increment | |
| item_id | int(8) | 0 | |||
| percent_off | varchar(60) | ||||
| comment | Blob | ||||
| Table: items | |||||
|---|---|---|---|---|---|
| Field | Type | Null | Key | Default Val | Extra |
| id | int(8) | PRI | NULL | auto_increment | |
| item_name | varchar(30) | ||||
| item_number | varchar(15) | ||||
| description | blob | ||||
| brand_id | int(8) | FKR | 0 | ||
| category_id | int(8) | FKR | 0 | ||
| supplier_id | int(8) | FKR | 0 | ||
| buy_price | varchar(30) | ||||
| unit_price | varchar(30) | ||||
| supplier_catalog_number | varchar(60) | ||||
| tax_percent | varchar(5) | ||||
| total_cost | varchar(40) | ||||
| quantity | int(8) | ||||
| reorder_level | int(8) | ||||
| Table: sales | |||||
|---|---|---|---|---|---|
| Field | Type | Null | Key | Default Val | Extra |
| id | int(8) | PRI | NULL | auto_increment | |
| date | date | 0000-00-00 | |||
| customer_id | int(8) | FKR | 0 | ||
| sale_sub_total | varchar(12) | ||||
| sale_total_cost | varchar(30) | ||||
| paid_with | varchar(25) | ||||
| items_purchased | int(8) | 0 | |||
| sold_by | int(8) | FKR | 0 | ||
| comment | varchar(100) | ||||
| Table: sales_items | |||||
|---|---|---|---|---|---|
| Field | Type | Null | Key | Default Val | Extra |
| id | int(8) | PRI | NULL | auto_increment | |
| sale_id | int(8) | FKR | 0 | ||
| item_id | int(8) | FKR | 0 | ||
| quantity_purchased | int(8) | 0 | |||
| item_unit_price | varchar(15) | ||||
| item_buy_price | varchar(30) | ||||
| item_tax_percent | varchar(10) | ||||
| item_total_tax | varchar(12) | ||||
| item_total_cost | varchar(12) | ||||
| Table: suppliers | |||||
|---|---|---|---|---|---|
| Field | Type | Null | Key | Default Val | Extra |
| id | int(8) | PRI | NULL | auto_increment | |
| supplier | varchar(60) | ||||
| address | varchar(100) | ||||
| phone_number | varchar(40) | ||||
| contact | varchar(60) | ||||
| varchar(50) | |||||
| other | varchar(150) | ||||
| Table: users | |||||
|---|---|---|---|---|---|
| Field | Type | Null | Key | Default Val | Extra |
| id | int(8) | PRI | NULL | auto_increment | |
| first_name | varchar(50) | ||||
| last_name | varchar(30) | ||||
| username | varchar(20) | ||||
| password | varchar(60) | ||||
| type | varchar(30) | ||||
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.
Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
NO WARRANTY
[1] On Windows hosts, this is often C:\inetpub\wwwroot\. If PHP Point of Sale is the only web application you intend to deploy, you can extract the archive directly into the wwwroot folder. Otherwise, extract it to a new subfolder below the wwwroot, and create a new Web with that folder, using the IIS snap-in of the Microsoft Management Console.
[2] On Linux systems, use chmod -v 766 /path_to_www_root/settings.php
[3] I hope your tax rate isn’t that high.
[4] For example, if you place myshop into this field, tables will be created as myshop_customer, myshop_items, myshop_brands, etc.
[5] To ensure that PHP Point of Sale uses your preferred item number when scanning barcodes, you should ensure the appropriate selection is made in the PHP Point of Sale Installation Page. For more information, see page 8.
[6] See PHP Point of Sale Installation Page on page 8.
[7] See Handling Cash Transactions on page 25 for more information.
[8] PHP Point of Sale does not perform credit card authorization functions.