Giter VIP home page Giter VIP logo

opensourcepos / opensourcepos Goto Github PK

View Code? Open in Web Editor NEW
3.2K 3.2K 2.1K 52.99 MB

Open Source Point of Sale is a web based point of sale application written in PHP using CodeIgniter framework. It uses MySQL as the data back end and has a Bootstrap 3 based user interface.

Home Page: http://www.opensourcepos.org

License: Other

JavaScript 0.65% PHP 98.74% HTML 0.12% CSS 0.34% Shell 0.12% Dockerfile 0.04%
bootstrap3 codeigniter3 inventory-management php point-of-sale reporting

opensourcepos's Introduction

Open Source Point of Sale Logo

Open Source Point of Sale

Introduction · Demo · Installation · Contributing · Bugs · FAQ · Donate · License · Credits

Build Status Join the chat at https://app.gitter.im Project Version Translation Status

👋 Introduction

Open Source Point of Sale is a web-based point of sale system. The application is written in PHP, it uses MySQL (or MariaDB) as data storage back-end and has a simple but intuitive user interface.

The latest 3.4 version is a complete overhaul of the original software. It uses CodeIgniter 4 as a framework and is based on Bootstrap 3 using Bootswatch themes. Along with improved functionality and security.

The features include:

  • Stock management (items and kits with an extensible list of attributes)
  • VAT, GST, customer, and multi tiers taxation
  • Sale register with transactions logging
  • Quotation and invoicing
  • Expenses logging
  • Cash up function
  • Printing and emailing of receipts, invoices and quotations
  • Barcode generation and printing
  • Database of customers and suppliers
  • Multiuser with permission control
  • Reporting on sales, orders, expenses, inventory status and more
  • Receivings
  • Gift cards
  • Rewards
  • Restaurant tables
  • Messaging (SMS)
  • Multilanguage
  • Selectable Bootstrap based UI theme with Bootswatch
  • Mailchimp integration
  • Optional Google reCAPTCHA to protect login page from brute force attacks
  • GDPR ready

🧪 Live Demo

We've got a live version of our latest master running for you to play around with and test everything out. It's a containerized install that will reinitialize when new functionality is merged into our code repository.

You can find the demo here and log in with these credentials.
👤 Username admin
🔒 Password pointofsale

If you bump into an issue, please check the status page here to confirm if the server is up and running.

🖥️ Development Demo

Besides the demo of the latest master, we also have a development server that builds when there's a new commit to our repository. It's mainly used for testing out new code before merging it into the master. It can be found here.

The log in credentials are the same as the regular live demo.

💾 Installation

Please refrain from creating issues about installation problems before having read the FAQ and going through existing GitHub issues. We have a build pipeline that checks the sanity of our latest repository commit, and in case the application itself is broken then our build will be as well.

This application can be set up in many different ways and we only support the ones described in the INSTALL.md file.

For more information and recommendations on support hardware, like receipt printers and barcode scanners, read this page on our wiki.

✨ Contributing

Everyone is more than welcome to help us improve this project. If you think you've got something to help us go forward, feel free to open a pull request or join the conversation on Element.

Want to help translate Open Source Point of Sale in your language? You can find our Weblate here, sign up, and start translating. You can subscribe to different languages to receive a notification once a new string is added or needs updating. Have a look at our guidelines below to help you get started.

Only with the help of the community, we can keep language translations up to date. Thanks!

🐛 Reporting Bugs

Before creating a new issue, you'll need copy and include the info under the System Info tab in the configuration section in most cases. If that information is not provided in full, your issue might be tagged as pending.

If you're reporting a potential security issue, please refer to our security policy found in the SECURITY.md file.

NOTE: If you're running non-release code, please make sure you always run the latest database upgrade script and you download the latest master code.

📖 FAQ

  • If you get the message system folder missing, then you have cloned the source using git and you need to run a build first. Check INSTALL.md for instructions or download latest zip file from GitHub releases instead.

  • If at login time you read The installation is not correct, check your php.ini file., please check the error_log in public folder to understand what's wrong and make sure you read the INSTALL.md. To know how to enable error_log, please read the comment in issue #1770.

  • If you installed your OSPOS under a web server subdir, please edit public/.htaccess and go to the lines with the comments if in web root or if in subdir, uncomment one and replace <OSPOS path> with your path and follow the instruction on the second comment line. If you face more issues, please read issue #920 for more information.

  • Apache server configurations are SysAdmin issues and not strictly related to OSPOS. Please make sure you can show a "Hello world" HTML page before pointing to OSPOS public directory. Make sure .htaccess is correctly configured.

  • If the avatar pictures are not shown in items or at item save you get an error, please make sure your public and subdirs are assigned to the correct owner and the access permission is set to 750.

  • If you install OSPOS in Docker behind a proxy that performs ssloffloading, you can enable the URL generated to be HTTPS instead of HTTP, by activating the environment variable FORCE_HTTPS = 1.

  • If you install OSPOS behind a proxy and OSPOS constantly drops your session, consider whitelisting the proxy IP address by setting $config['proxy_ips'] = '<proxy ip>'; in the main php config file. In extreme instances, changing $config['sess_match_ip'] = true; to FALSE may also help.

  • If you have suhosin installed and face an issue with CSRF, please make sure you read issue #1492.

  • PHP 8.0 is not currently supported, see issue #3051.

  • PHP 5.5 and 5.6 are no longer supported due to the fact that they have been deprecated and not safe to use from security point of view.

🏃 Keep the Machine Running

If you like our project, please consider buying us a coffee through the button below so we can keep adding features.

Donate
Or refer to the FUNDING.yml file.

If you choose to deploy OSPOS in the cloud, you can contribute to the project by using DigitalOcean and signing up through our referral link. You'll receive a free $200, 60-day credit if you run OSPOS in a DigitalOcean droplet through our referral link.

📄 License

Open Source Point of Sale is licensed under MIT terms with an important addition:

The footer signature "© 2010 - current year · opensourcepos.org · 3.x.x - hash" including the version, hash and link our website MUST BE RETAINED, MUST BE VISIBLE IN EVERY PAGE and CANNOT BE MODIFIED.

Also worth noting:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

For more details please read the LICENSE file.

It's important to understand that although you are free to use the application the copyright has to stay and the license agreement applies in all cases. Therefore any actions like:

  • Removing LICENSE and/or any license files is prohibited
  • Authoring the footer notice replacing it with your own or even worse claiming the copyright is absolutely prohibited
  • Claiming full ownership of the code is prohibited

In short, you are free to use the application but you cannot claim any property on it.

Any person or company found breaching the license agreement might find a bunch of monkeys at the door ready to destroy their servers.

🙏 Credits

JetBrains
Travis CI
IntelliJ IDEA Logo
Travis CI Logo
Many thanks to JetBrains for providing a free license of IntelliJ IDEA to kindly support the development of OSPOS. Many thanks to Travis CI for providing a free continuous integration service for open source projects.

opensourcepos's People

Contributors

arteiro avatar awriel avatar budsiebuds avatar caston79 avatar cikov avatar cpl2015 avatar dan4cat avatar ekardian avatar emintufan avatar flodef avatar hucka avatar jacekz123 avatar jekkos avatar jlctmaster avatar johannesroesch avatar khaolek avatar lucailvec avatar mckaygerhard avatar nerv55 avatar nic-69 avatar objecttothis avatar robbytriadi avatar steveireland avatar tomadank avatar vnwildman avatar weblate avatar webshells avatar wibinem avatar xykoinfo avatar zv20 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

opensourcepos's Issues

Export to email address

Instead of exporting to excel I would love to get the low inventory via email. Is this possible

Bug: Receiving cannot be edited if invoice number is empty

I noticed that when I go into reports and try to edit a receiving, it does not work.
I think it has something to do with the fact that there is no invoice number and I get the error that there is a duplicate entry for invoice number...

Make barcode sheet output adaptable

Original issue from http://sourceforge.net/p/opensourcepos/support-requests/75

Generating barcode presently creates a barcode which gives the item_id and name from table/database ospos_items.

  1. I want to change the item_id to item_number. In other words I would like the barcode when scanned to give the upc number not the item id.
  2. I would like to add the price (unit_price) to the barcode. I have not been able to find where I need to change/add this information. Pls help!
    (Ori: MClark)

Feature request: Use ESC/POS to send commands to a printer connected

use ESC/POS commands to send commands direct to the printer, which is connected to the server. It can be used https://github.com/mike42/escpos-php

It allows for send of image, text, barcode, cutting function and etc, allowing to talk natively with the printer. Note that required the printer connected direct to the server, or printer on network .

I think it would be awesome addition for the Php POS program, and would make it perfect for my use and many others uses.

Hopefully feature get added, and sorry for my English.

Using $line-value as "fall-back" for missing language lines

If a language line is missing, then CI_Lang::line returns FALSE and writes a line to the error log.
This way sometimes there isn't displayed anything, which can look strange. Wouldn't it be better if at least the name of the quiered language line (the $line-value) was returned?
Or first the english language line, if it is not set, then take the $line-value...
Since this is handled by the CI_Lang-Class which is part of codeigniter I think it is not so good to change that file, but how could that be done? I see MY_Language extends Lang, but that is not CI_Lang, so it is something else, isn't it?

Return doesn't work

Hi,
I made a sale. It generated the sale_id. I also added a customer.

1.While returning I typed the full sale_id - POS 1
it wasn't able to show the result in the auto-complete.

  1. I searched with customer's name. It wasn't able to show anything.

This might be the reason -
in auto-complete we format the result for row[1]...But from backend we only send the sale id or customer name. Following piece of code might be the issue...

function get_search_suggestions($search,$limit=25)
{
    $suggestions = array();

    if (!$this->sale_lib->is_valid_receipt($search)) {
        $this->db->distinct();
        $this->db->select('first_name, last_name, invoice_number, sale_time');
        $this->db->select("DATE_FORMAT( sale_time, '%d-%m-%Y' ) AS sale_date", FALSE);
        $this->db->select("sales.sale_id AS sale_id");
        $this->db->from('sales');
        $this->db->join('people', 'people.person_id = sales.customer_id', 'left');
        $this->db->where("( last_name LIKE '%" . $search . "%' OR ".
                "first_name LIKE '%" . $search . "%' OR " .
                "CONCAT( first_name, last_name ))");
        $this->db->order_by('last_name', "asc");

        foreach($this->db->get()->result_array() as $result)
        {
            $suggestions[]="POS ".$result[ 'sale_id' ].'|'.$result[ 'first_name' ].' '.$result[ 'last_name' ]; ///////////// changed to concatenate id
        }

    } else {
        $suggestions[]=$search.'|'.$search; ///////////changed to concatenate id
    }
    return $suggestions;
}

Is this a bug...??? Or I am doing something wrong...I am not testing with barcode scanner...That's why I entered the full sale_id manually...

Looking for opensourcepos expert for contract work

Since there is no longer a private message function, I'm not sure what is the appropriate way to do this, but we have deployed opensourcepos as part of larger veterinary practice management solution and we need some extra muscle for enhancing and applying updates. Please contact me for additional details.

Gift Card Issue

Gift card auto increment is not working past the number 10. It stays on 10 after that value is reached. I also noticed after going into phpmyadmin and deleting the gift cards and starting over that the gift card number selected to edit shows the gift card_id in the Gift card edit screen and not the gift card number.

Duplicating item modification

In the Item Tab :

  • I have a list of different items
  • I click on the "edit" link to edit one of them
  • I change one of its value (anything works)
    ==> All the items are duplicated and show my changed item !!

If I refresh the page, everything returns to normal : the list of different items is displayed correctly and my item value has been changed.

PS : When I have time, I'll have a look at it :-)

modifitem

Permission to access the module

The logic to check for access to a specific module does not work correctly. I get "You do not have permission to access the module named Sales (items)"

It seems that the join is not right in module.php
$this->db->join('permissions','permissions.permission_id=modules.module_id');

Add Image to Sales/Estimate

We would like to upload a simple .jpg or .png file to the sales. We are a security company and we have inital cad drawings of the site location and where their cameras are going to be placed.

Could be this performed?

Problem with permissions: Only selling not possible

I noticed that I cannot give a user only the permission to sell products. Because if I do, then if that user wants to sell something, an error is produced in stock_locations-model::get_default_location_id().
If I grant the user permission only to the different stock-locations but not to the whole items-module, the module items is not listed in the menu, but if you just type in the url /items the user has full access to the items module and can edit/delete and everything...

Option in Config: Thousands Separator and Decimal Point

It would be nice to choose in the config if one wants a dot or komma as a decimal point and if there should be a thousands separator. In Indonesia where 100,000.00 Rp are about 10US$ , so the thousand separator is very important.

Success notification on excel import items.

I have a large no. of items list in excel.

I imported excel sheet but there was no indication/notification of items being importing or finishing excel import indication.

Receiving Quantity under the new item dialogue box?

Can you please explain to me the field "receiving quantity" in version 2.3.1?
It is a third field... different from "Quantity Stock" and "Reorder Level".
I have reviewed how it operates, for example I added an item with 2 quantity
and sold those two items yet the "receiving quantity" field still shows 2.
It is almost as if it is acting as a record of the last amount received? I
am not quite sure. It is not impacted by selling product. Thanks so much!

Quantity stock zero on edit item

Quantity stock show zero on edit an item even quantity is greater than zero.

No. of Quantity is not picking up in the edit item form.

Sales

Hello,
We are just starting to use your POS for our inventory and sales management. We LOVE everything you currently have and really want to roll this out for full use with our employees. We are a security camera company that sells and leases our cameras out.

I have a couple of requests and would like to donate to aid to their completion:

  1. In your sales, can you have Estimate, Sales, and Return (i.e. for customer estimates that we can then go back, edit if necessary, and then change to a sale once its made?) For reporting have these estimates show up under the customers, so we know who has had a quote and we can complete sale by meeting up with customer again.

I think as of now, we can utilize the sale and return function for our leased equipment. But i have a problem with my returns. I have reduced the description of the item as it was previously giving me an error when I completed a sale, but when I tried to return the item, it would not let me edit and complete the transaction as it gave me the error that it was too long again.
http://tcf-s.com/stk/index.php/sales/edit_item/1

2.Can you filter by Category in Sales to a customer? We have to have each of our categories filled in our excel sheet, i.e. NVR, CAMERA, HARDWARE, SOFTWARE before completing to customer. Is there a way to populate the categories so we know we have items from each selection?

Currency Symbol not updating

I changed the currency symbol in app config but it wasn't effecting and still showing '$'.
After going through the code I found this in (application\helpers\currency_helper.php):

$currency_symbol = $CI->config->item('currency_symbol') ? $CI->config->item('currency_symbol') : '$';
$currency_symbol = $currency_symbol == '$' && $escape ? '$' : '$';

I think this causing the symbol to make it always '$'.
So I commented the second line and currency symbol changes in the app everywhere.

security breach

if a user is logged in and then instead of logging out clicks the x on the title thereby closing the page,
anyone else can get into the program without putting in a username and password just by clicking the 'go' button on the login screen

Gift card sort

Sorting Gift card number does not work.
You have to give permission for stock under Item not to get #55 error.
Are you going to implement a barcode print feature?

exporting low inventory report

i found out that when exporting the low inventory report all items will be seen,
can you make additional column for exporting name as "suppliers" so that if a user wants to sort the items by suppliers
just like what you did in your items section if put a category in search bar all items in that category can be seen.
sort: suppliers, items(category)
additional column: suppliers

Feature-Request: New Inventory Report (showing stock value)

I thought it would be great to see what value all the stuff I have in stock has at the moment.
Therefore it would be good to add one report. With a small form before where I can choose which stock location and if I want to include negative-stock levels or not.
I would be happy to do that, but unfortunately I don't really understand the reports-controller...

By the way: do you prefer to have issues postet here on github or on sourceforge?

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Sales add item auto complete issue

  1. If you do a blank search, it shows up each item twice...If you enter some character then it shows correctly...
  2. When you select an item, it shows up the id in the input field..It should show the name instead...

Bulk new item creation

i would like to know is there any function to bulk create new item with serial number without enter the same item information.

The scenario apply to mobile phones where by i hv 1 model with different EMEI each phone. Pls advice

Bug: When deleting receiving, stock of item does not change

I noticed that when I receive items, of course, after the receiving the quantity is higher according to the receiving.
If I now go into reports and choose Detailed Reports->Receivings and click on the receiving's ID and click "delete entire sale", the receiving gets deleted, but the quantity of the products which were received does not change...
So when I make a mistake in a receiving, notice it, and delete it, I have to manually change the quantity which can be difficult if I don't write down the quantity which was received...
Or is there a different way to delete receivings?

Same with sales: If I delete a sale through the Sales-Report, the quantity stays the same as if the item was sold...

Undefined property: stdClass::$category Filename: items/form.php Line Number: 38

I'm trying to submit a product, but firstable it shows me a php error that says:
Undefined property: stdClass::$category
Filename: items/form.php
Line Number: 38

second: even though it shows that problem, I can fill out the fields, but I can't submit the form, It actually verifies the fields (if I did't complete it properlly ) but It doesn't allow me to submit it.

Can you help mee! please!

categories and subcategories

Hello sir. Hope you will fine with your health and business
Sir, it is possible, make a system like Categories have different sub categories and all items have same item number.....

Bountysource

Database import 2.3.1_to_2.3.2.sql

last two import statements are incorrect, should be:

ALTER TABLE ospos_customers
ADD COLUMN company_name varchar(255) DEFAULT NULL;

ALTER TABLE ospos_giftcards
MODIFY person_id int(10) DEFAULT NULL;

Item -> List of Item Data Location Sort is not working in Ospos 2.3.2

Ospos 2.3.1 , in the Items menu List of Item can be sorted using Location filtering but in version 2.3.2 Items cannot be filtered based on the location selection.

Could you give a guideline how to fix it Or is it already being fixed ? Appreciate your help.

Thank You
Digantos

Translation Date e Date Format selection

Congratulations for the work, i am translating the language file in Italian and i have almost completed all but i can not translate the dates (month-day), i found the files in system/language but when i translate them nothing changes and remain in English. Can you explain how to complete the translation and for the change of date format (d / m / Y). Thank You

Theme

Thanks to this great app, very useful. Is it possible to use bootstrap for frontend? If it is possible, what things do i have to consider to not break the app. thanks in advance.

Customer debt function

On popular request I will consider to implement a customer debt function. This is quite a big new feature and thus will require a couple of hours programming.

Just to keep myself motivated I would like to ask people to offer donations (just post to this issue), and if the add up of all individuals reaches $300 I will do the implementation.

Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

overview feature permissions

Hello jekkos,
Just downloaded the ospos-master 2.3.2 and tried it out, noticed that employees with access to only the sales module, can delete sales through the overview feature!?

Secondly, in the items module, when a different location is selected, items and their quantities don't change to selected location.

Keep up the amazing work.

Stored XSS issues in multiple screens

Hi, i would like to report a stored XSS vulnerability inside de open source POS application. I tested the sourceforge code and found the following list of vulnerable parameter:

-Customer > last name, first name, phone number
-ALL > welcome
-list of items > UPC/EAN/ISBN, item name, category
-item kits > item kit name, item kit description
-suppliers > company name, last name, first name, phone number
-items receiving > select supplier search, item name
-receivings receipt > item name, employee name, payment type
-sales register > item name, select customer search
-sales receipt > employee, item
-list of employees > lastname, first name, phone number.
-when creating item> category list
-gift card> customer list
-store config> company name, stock, company address, company phone

I also tested a couple of fields on the github code and the issue is present

to replicate the issue just enter on the fields mentioned. please let me know if you need more information.

Arturo Rodriguez
Security Consultant

Bug (?): Error when creating a new item without image

When I create a new item and do not select an image, it does not work.
Does it maybe has something to do with the fact, that _handle_image_upload() is always called and that there is no check whether $_FILES['item_image'] is empty or not?
Or is something with my setup wrong?

Changing the price of an item when receiving it

Often my prices change for some stuff I buy.
Therefore it would be cool to be able to change the price of a product when receiving it.
If I still have items in stock, an average price shall be calculated.

Contact Me

Jekkos,

Can you contact me. Sorry could not find your email. [email protected] Curtis referred me to you. Fee based development for a specific industry.

You can delete this issue.

Thanks

problem with currency_symbol

Hi, the problem is in the helper to_currency in the line 7

$currency_symbol = $currency_symbol == '$' && $escape ? '$' : '$';

because always the symbol is $ instead the configured.

error in

At "New item modal form"

....

Receiving quantity:
[ A PHP Error was encountered

Severity: Notice

Message: Undefined property: stdClass::$receiving_quantity

Filename: items/form.php

Line Number: 143 ]

How can resolve it ?

How to track stock with unique serial number?

When create new item, I noticed that is a check box for item with serial number but there is no place to input the serial. During the sales, when the item is selected, it require to input serial number.

Am I missing certain steps to input the serial number or the serial number is for information purpose only and not for detail stock tracking?

Discount

Is it possible to have further discount on subtotal value after tax?

Sales->Returns oddity (release 2.3.2)

This project is awesome. But for some reason, when selecting Sales->Register Mode->(Return), and double clicking on "Find/Scan Item OR Receipt" entry box, it doesn't display the list of my items, it does when in 'Sale' mode

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.