Code Monkey home page Code Monkey logo

eppos's Introduction

release-version-badge travis-CI-badge

EpPos

EpPos is a basic Django (python)-based Point Of Sale system that is designed to be platform-independent (it runs on the web) and completely mobile- and touch-friendly.

Contributors: see the CONTRIBUTING file!

What is a POS?

A POS (Point Of Service) system is the software that is used by cashiers and waiters to bill you and keep the stock. This one is meant for smaller businesses, like food trucks.

How can I run it?

It is very simple. Have a look at the wiki! Or read this block of text for the short version.

Install docker and docker-compose, download EpPos and navigate into the directory. Run docker-compose up -d --build. Wait for it to complete and run docker-compose run web ./manage.py createsuperuser and follow the prompts to create an admin account. Go to localhost in your browser and log in!

If you need help with this, you can just create an issue. Please do search through previous issues though.

Known "issues"

  • There is a limitation in the total value of an order. It cannot exceed 10 digits, counting decimal places. If someone runs into this: congratulations, I'll have to update this.

I found a bug

Congratulations! You can report this issue on the issue tracker on GitHub. I will be forever grateful if you could possible be so kind as to include a server log and/or web console log.

I want to help!

Absolutely marvelous! Have a look in the CONTRIBUTING file for info about contributing!

I want to make a spinoff!

You absolutely may. If you think what you want in a POS is not something that is in the scope of EpPOS (although you may always ask) you can for sure just fork it. Details are in the LICENSE file, we use the Apache license.

Maintainers aka. Who Do I Talk To?

Epse aka. Stef Pletinck

Hall of fame

Everyone who contributes to EpPos gets a spot here.

eppos's People

Contributors

epse avatar manuelfedele avatar roenw avatar spaetz avatar zerocoolhacker 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

eppos's Issues

Settings

System settings with everything that I doubt about configurable

Stock on order clearing

When clearing an order, all items in an order's stock should be added back. Right now this can make stock disappear.

Also, make a unit test for this.

Refactor of Orders

Orders will be changed to stay in the database forever as a means of being able to look at previous orders. They will get fleshed out more and instead of having a JSON array of product titles and ID's, prices will be added as well.

I can't just make the order store a list with product ID's and quantitiies since an archived order may be made with different product pricing that the current.

reset cash button

make it only visible for admins, and allow users to enter a custom amount of change left in the register

Docker

Docker makes it a lot easier to deploy EpPos.

docker-compose run web ./manage.py createsuperuser "No such file or directory"

Hello

docker-compose up seems to have worked fine. There was no db folder in web folder so I added one before running docker-compose up.

docker-compose run is yielding the following :
/usr/bin/env: ‘python3\r’: No such file or directory

which I understand is probably super simple to solve, but I am noob and stumped looking through stackExchange etc...

tia

ValueError: too many values to unpack (expected 2) on reset_order() [line 181, pos/views.py]

helper.setup_handling(request) returns 3 value tuple.
This raises the ValueError exception (python3.6.4) on line 181 of pos/views.py.
Just by adding an underscore for currency unpacking (there's no need to save currency value in reset order) the bug is fixed.
from
cash, current_order = helper.setup_handling(request)
to
cash, current_order, _ = helper.setup_handling(request)

Requirement File

I immediately download it but I do not know which version of django you use and what libraries you install. It is good when you create the requirements.txt file to make it easier for others to use your application. Thanks

Fix default route

Just make the / route redirect to /pos. Right now, getting back from the admin page is a nightmare.

Having an issue where from my mobile phone, order invoice is being generated with no products

Only on my phone, which is an Android running Chrome.

Potentially something in the javascript is not compatible? I need help knowing how to give back the relevant debug information.

I have an instance running live at the moment, I can give credentials out if you want them. My twitter handle is the same as my github, so if you want, you can DM me and I will provide credentials.

Cash tracking

System for counting the amount of cash in the register with logging.
Additional permission to view log

Sales Dashboard in admin

There should be a dashboard in admin where you can see your sales in different periods of time and in different categories shown in some graph or table.

Increase API surface

This should allow new front-ends to be developed (as well as possible native clients).

What we currently miss:

  • Authentication via API
  • A JSON addition

And way of using the current API's (like reset_order) that return the entire page, without getting the entire page.

Make it work! [Clear Order Button]

By adding
Order_Item.objects.filter(order=current_order).delete()
in pos/views.py, after line 181, in reset_order() method, Clear Order button works for real, deleting Item_Order objects of associated Order object.

docker-compose up -d --build is failing

I've Installed docker and docker-compose, downloaded EpPos and navigated into the directory. Now when I run docker-compose up -d --build, it fails giving the following messages and errors:

Building web
Step 1/3 : FROM python:3.5-onbuild

Executing 3 build triggers...

Step 1/1 : COPY requirements.txt /usr/src/app/
---> Using cache
Step 1/1 : RUN pip install --no-cache-dir -r requirements.txt
---> Using cache
Step 1/1 : COPY . /usr/src/app
---> Using cache
---> 2f0952866368
Step 2/3 : WORKDIR /usr/src/app
---> Using cache
---> 6887784cd6b3
Step 3/3 : RUN python manage.py migrate
---> Running in 2b5f4d83629e
Traceback (most recent call last):
File "/usr/local/lib/python3.5/site-packages/django/db/backends/base/base.py", line 213, in ensure_connection
self.connect()
File "/usr/local/lib/python3.5/site-packages/django/db/backends/base/base.py", line 189, in connect
self.connection = self.get_new_connection(conn_params)
File "/usr/local/lib/python3.5/site-packages/django/db/backends/sqlite3/base.py", line 198, in get_new_connection
conn = Database.connect(**conn_params)
sqlite3.OperationalError: unable to open database file

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "manage.py", line 10, in
execute_from_command_line(sys.argv)
File "/usr/local/lib/python3.5/site-packages/django/core/management/init.py", line 363, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python3.5/site-packages/django/core/management/init.py", line 355, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python3.5/site-packages/django/core/management/base.py", line 283, in run_from_argv
self.execute(*args, **cmd_options)
File "/usr/local/lib/python3.5/site-packages/django/core/management/base.py", line 330, in execute
output = self.handle(*args, **options)
File "/usr/local/lib/python3.5/site-packages/django/core/management/commands/migrate.py", line 83, in handle
executor = MigrationExecutor(connection, self.migration_progress_callback)
File "/usr/local/lib/python3.5/site-packages/django/db/migrations/executor.py", line 20, in init
self.loader = MigrationLoader(self.connection)
File "/usr/local/lib/python3.5/site-packages/django/db/migrations/loader.py", line 52, in init
self.build_graph()
File "/usr/local/lib/python3.5/site-packages/django/db/migrations/loader.py", line 209, in build_graph
self.applied_migrations = recorder.applied_migrations()
File "/usr/local/lib/python3.5/site-packages/django/db/migrations/recorder.py", line 65, in applied_migrations
self.ensure_schema()
File "/usr/local/lib/python3.5/site-packages/django/db/migrations/recorder.py", line 52, in ensure_schema
if self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor()):
File "/usr/local/lib/python3.5/site-packages/django/db/backends/base/base.py", line 254, in cursor
return self._cursor()
File "/usr/local/lib/python3.5/site-packages/django/db/backends/base/base.py", line 229, in _cursor
self.ensure_connection()
File "/usr/local/lib/python3.5/site-packages/django/db/backends/base/base.py", line 213, in ensure_connection
self.connect()
File "/usr/local/lib/python3.5/site-packages/django/db/utils.py", line 94, in exit
six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/usr/local/lib/python3.5/site-packages/django/utils/six.py", line 685, in reraise
raise value.with_traceback(tb)
File "/usr/local/lib/python3.5/site-packages/django/db/backends/base/base.py", line 213, in ensure_connection
self.connect()
File "/usr/local/lib/python3.5/site-packages/django/db/backends/base/base.py", line 189, in connect
self.connection = self.get_new_connection(conn_params)
File "/usr/local/lib/python3.5/site-packages/django/db/backends/sqlite3/base.py", line 198, in get_new_connection
conn = Database.connect(**conn_params)
django.db.utils.OperationalError: unable to open database file
ERROR: Service 'web' failed to build: The command '/bin/sh -c python manage.py migrate' returned a non-zero code: 1
screenshot from 2018-10-09 19 55 10
screenshot from 2018-10-09 19 54 08

Cash Object & Order

Great Work!

Cash Objects :
It's great you are able to capture the total value of the products paid for.
However I advice that you will need to be able to view Transactions, This would include the timestamp and items sold, total cost.

Order :

The current order shows the Product Name only, will be great to include the product Price, just so the customer knows what they paid for.
This would link with the new Transactions class, where you are able in future to link to a printer for receipt.

NameError name 'productInDatabase' is not defined

Hello, just trying out EpPos (great name :-)). I get an error when adding cash. It seems the master branch has a typo. Pull request coming up.

/pos/addition/cashpayment

NameError name 'productInDatabase' is not defined
./pos/views.py in addition, line 53

Codes and barcodes

Add a new code' field. This field can be used for short mnemonic codes or barcodes. You will be able to add products to a running tab by code`. E.g. by scanning a barcode.

Colours for products

Products in a POS system are often colour-coded.
We want to add a colour property to the Product model, a dropdown to select a colour in the admin, order the products in the Order screen by colour and show the colours.

Bundle jquery et al.

RIght now, we dynamically load all javascript and bootstrap, which is fine for testing, but it would be better to locally bundle and send it. If there is no network connection (or it is slow) our POS would not work anymore (besides privacy issues).

Payment system buildout

The Pay button should show a dialog box with payment methods.

Right now I'm not planning on getting any online payment going, but if a client pays by card in-store, that amount should not get added to the Cash amount, for example.

With our current food-truck-like focus, I think adding Card and Cash payments as options should be enough.

Printing Page for additions

  • Make a page for displaying additions that can be printed
  • Add an option to display and print the addition after payment
  • Add an option in the admin panel for every addition to display / print it

Add more to the README.md (don't mean to be rude)

Saw this project posted to /r/coolgithubprojects. Currently your README is very lacking, which will make people just ignore your project.

some things I suggest to add to the README are

  • depends.
  • one or more screenshot(s) of the software running.
  • list of author(s).
  • what license it's under.
  • what the software does (for people who might not be familiar w/ POS).

not trying to be annoying, just don't want your effort to go to waste!

Feature Request: Ability to generate invoices retrospectively

This would allow details of an order to be amended should an error occur. And then a new invoice generated.

As part of this, it would be useful to be able to auto-generate all invoices at the end of the business day for book-keeping.

Potentially, a well formatted text file is simpler than difficult to parse pdf?

Time of sale becomes important feature to catch, because it cannot be assumed that the time of invoice equals time of sale.

Allow deleting a specific item in the ranking

If I add

Burger
Coke
Burger

and I want to delete the last Burger because some guest canceled the order, I would like to be able to have the item disappear where I clicked the "X". Right now we search for the product name and delete a random one.

Cannot jump into shell

Cannot jump into "./manage.py shell".
It simply returns "No module named admin_views".
Did I miss something?

Stock warnings

Show warnings when stock drops under a specified amount

Cant install

Doing all the setup and when running make setup getting this error.

failed to load cache key: invalid empty config file resolved for docker.io/tutum/nginx@sha256:69a727916ab40de88f66407fb0115e35b759d7c6088852d901208479bec47429

Help Appreciated.

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.