
CashRegister in PyQt5 with barcode logon and 32 programmable buttons - DirkJanJansen
https://github.com/DirkJanJansen/Sales
======
Phillipharryt
Programmer who also works in retail, uh no, this layout highlights all the
wrong things. The list of items is half the screen, my current system has it
at about 1/4 and buttons are enormous, very easy to use and rarely ever miss a
button or hit the wrong one, this looks like that will happen all the time.
Also we have a lot of colour in buttons that relate to use (payment buttons
red, department buttons green, account buttons yellow), this has grey and grey
and grey. It might work but I pity anyone using this system. I think with some
more UI considerations for the actual use cases (what do register users need
the item barcode for? I might enter it but once the item name pops up I don't
need it taking up my screen) this could get good. I also don't need whitespace
between buttons, have them as big as you can.

~~~
DirkJanJansen
You should not compare this with a commercial program, I'am a hobbyist and not
a professional. I think it's a good effort for an open source product.

~~~
Mashimo
He is still giving you constructive feedback that you can use to improve your
product. Even if it's just a hobby. I assume that is why you posted it here?

If I my add something as well. Use a local git program to commit and add files
instead of using drag 'n drop from the website. Add commit massages with a
short description of what you changed.

I would also remove all the logos in the program.

Keep at it :)

~~~
DirkJanJansen
Thank you for your response. In the installation directory is a changelog.txt
in which all the changes and additions in the program are documented.

------
smileypete
Reminds me of this DOS PoS freeware that's been around for a while:

[http://keyhut.com/pos.htm](http://keyhut.com/pos.htm)

[http://keyhut.com/posphoto.htm](http://keyhut.com/posphoto.htm)

If it's run on straight DOS then there's no need for OS updates, no worries
about viruses, no telemetry yada yada :-)

------
teruakohatu
The guy who made this also made a desktop gui ERP application to teach himself
python (or programing general, I forget). He is an inspiration.

Keep doing what you are doing Dirk.

[https://github.com/DirkJanJansen/Pandora](https://github.com/DirkJanJansen/Pandora)

~~~
DirkJanJansen
Thank you for your inspiring comment.

------
mrkramer
How this compares to commercial software solutions? Seems very interesting.

~~~
jaxn
Poorly. I can't imagine using this in a fast-paced retail environment.

~~~
downvoteme1
Any specific reasons why you think it would compare poorly to other commercial
applications. I have tried the ones at Walmart and they are sometimes very
slow to respond .

~~~
jimnotgym
To be fair, some commercial systems suck on UX too, but some of them are much
better than this.

If you compare it to eposnow[0] for instance, and see the adoption of large
clear buttons.

The real differences, as I see it, between this and commercial systems are

1) most commercial tills are clients that poll a server that allows central
management of stock, prices, and extraction of sales data by api

2) commercial tills can integrate with card machines, so the price comes up on
the machine automatically, and successful payments are registered on the till.
In a busy store this stops under/over errors.

The world needs a decent, hackable, open source till, because there are many
situations where you need small but important extra features. Without the
above I would say appeal is going to be limited, but good luck to the author

[0]:[https://www.eposnow.com/uk](https://www.eposnow.com/uk)

Edit:formatting

~~~
DirkJanJansen
It's easy to put this on a server with clients pos. For a server database
system postgreSQL is used.

~~~
jimnotgym
It might be worth clearing that up in the docs then. I missed it

~~~
DirkJanJansen
In my past i have developed client server applications. Long time agoo before
relational databases appear. In the time of dbii and clipper (compiler and
linker) But i'am retired now and i have not a network in my home to apply with
ip numbers for testing. Thats the simple reason that i did not explain it in
my documentation. But anyone will be my guest and fork it and work on it.

------
DirkJanJansen
Screenshot
[https://github.com/DirkJanJansen/Sales/blob/master/Cashregis...](https://github.com/DirkJanJansen/Sales/blob/master/Cashregister.png)
Documentation
[https://github.com/DirkJanJansen/Sales/blob/master/Installat...](https://github.com/DirkJanJansen/Sales/blob/master/Installation/Sales_CashRegister.pdf)

------
DirkJanJansen
2020-06-26 Added 5 changeable buttongroups with each 39 programmable buttons.
Bigger coloured buttons and removed logos from front end.

------
DirkJanJansen
Changed to 40 bigger buttons. Layout changed and applied some colors. With
thanks to Phillipharryt for his constructive comments. Thanks buddy!

------
joezydeco
Asking out of curiosity: why did you choose Riverbank’s python binding instead
of Qt’s?

~~~
DirkJanJansen
I don't know the difference. I learned myself python, Pyqt5 and postgreSQL in
a relative short period, mostly by examples and documentation online. Got a
little knowledge from my past by learning and programming in Clipper and
QBasic for my last company, long time agoo (1997-2002). Now i am retired and i
like to program in python (My age is 75)

~~~
joezydeco
Gotcha. I'm a commercial Qt developer and starting to think about Python being
a first-class language in my ecosystem. But I've learned that the more robust
binding, PyQt, is a GPL/Commercial offering separate from the Qt licensing.

Qt for Python is the "offical Qt" binding but it's not as robust or even
supported on some platforms like embedded. It's a bit frustrating.

Still, nice work!

~~~
DirkJanJansen
I have looked at C++. But development in Python is fast and you get more
ideas. So for development and testing i should prefere Python and then i
should program it in C++ for commercial use. I saw earlier in my former
business, that interpreters were used for big programs. That way you can test
fast, for you can see your errors fast.

~~~
joezydeco
Totally agree. It's even more useful in a cross-compiled development
environment.

Typically I'm developing in Qt/C++ on a host and then using a custom crosstool
chain to recompile for the target. The entire cycle isn't that bad, but it's
not instantaneous. Using Python has radically sped up some parts of what I'm
doing on the target hardware.

