[Feature] [ERPNext v13] New Point of Sale Beta Testing

Summary Addendum

  1. Ability to give global discount, this should be rights controlled, the item discounts should also be rights controlled from PoS profile ideally
  2. At checkout page, once a cashier clicks on a payment method, the payment balance should always be displayed. Eg, if the total is $100 and the customer is paying by cash and credit card. If the cashier clicks on cash, the full $100 should be displayed, if the cash component is $20, the cashier types this in. When she then clicks on credit card the balance $80 should be displayed

@nextchamp.saqib

You may want to consider breaking this up into two different releases: one focusing on a new UX, and one focusing on the more fundamental backend changes. Bunching everything together into one release may be too disruptive.

Regarding the new UX: a lot of the discussion here is about different use cases - restaurants, fast-moving grocery stores, slow-moving boutiques, etc. Each use case is going to have different requirements. A potential solution for this is to identify 2 or 3 different views that can meet a majority of use cases and build around that. For example, a restaurant view, a barcode-focused view, and the present default view. The idea would be to share as much as possible, with a few tweaks. And if done in an extendible way, people could start contributing their own views.

Regarding the backend change, it looks like you’re making changes to focus on speed. The thing here is that not everyone is going to be happy regardless of the outcome because people have different priorities. In places that prioritize speed (ex: grocery retail), they will probably be quite happy, and be OK with reconciling issues at the end of the day. For places that prioritize real-time inventory for accounting or regulatory purposes, they will probably be OK with waiting 20 seconds for all accounting to be done in real time. I think if you’re looking for the widest acceptance, you’re probably going to want to build a queueing system for POS transactions. Those who want realtime accounting will just disable the queue and continue as-is. Those who need speed can enable the queue and then reconcile at the end of the day. If architected correctly, you’re only building a queue with queue processing logic, and everything else remains the same.

3 Likes

Already added in our app discount level is assigned in pos profile which restrictions cashier to give any discount above the set limit. Without forgetting that max discount from item master can override this pos profile discount for specific promotional discounts which is higher than the discount set in pos profile.

Also present in the custom app to display balance onn light box after printing the invoice instead of showing it only on payment tab.

Hi @fkardame

I know these are all present in your app, I actually am using some of the functionalities in your app as reference.

But your app will soon become obsolete once event streaming is perfected. Offline PoS will no longer be required. This is why I am taking out the time to ensure that this new online PoS has all the required features.

Regards

Exactly the same for me :slight_smile:

In retail business especially supermarkets there are 3 features that are not part of ERPNext

  1. Weight machine integration. This is an essential tool when selling loose items like fruits, vegetables, nuts etc. The price is printed on the barcode stickers and scanned at cash counter. Am sure all know how the process works. Here’s an example of the machine

https://www.mycomsys.com/weighing_scale.html

Here’s the script by @adam26d shared on the thread

@olamide_shodunke were you able to make it work?

  1. Price display using customer VFD
    Customer displays LPOS-VFD

VFD are either connected via USB or RS232 ports. They can be integral part of a point of sales machine or connected separately as independent unit. Some countries have consumer law which mandates seller in displaying price as the items are scanned at the cash counter. I searched discuss thread for VFD but didn’t come up with any result.

Am sure some member of community has done this. Odoo has done it and I was able to get the script folder. I have uploaded the whole folder here. I have never tried Odoo so dont know if it actually works.

Some of our whiz members may look at the script and find ways of using it in ERPNext.

  1. 2nd screen display. Some POS machines have a smaller non-touch LCD. They usually mirror the POS display. Some software display the item, qty price etc. Maybe run advertisement as header or footer.

It is always either VFD or LED Display that is used. On priority basis I would work on VFD before LED.

Along with enhancement of POS lets look at how these 3 features can also be accommodated in the core to make it rock solid.

1 Like

Hi @Muzzy

  1. Yes I was able to make @adam26d’s script work up to v11. But this is something that should be integrated and could easily be integrated. The code needs cleaning up though.

  2. So far VFD price display has been a dead end, no one has been able to make it work

  3. 2nd Screen display as a mirror of the PoS display is not an issue, you simply mirror the windows screen. Where it could be interesting is the ability to show adverts by the side as shown by you above.

While we have @nextchamp.saqib’s attention, these are all issues that should be discussed and addressed to make Retail a more viable proposition on ERPNext.

1 Like

Hi
I am getting a bit depressed of all these discussions.
I have been using ErpNext (Frappe Cloud) even before a POS existed.
I was very glad with the very first POS introduced years ago …2014??2015.

Discussions on the POS have always been rather emotional…designs have been made…as well as many suggestions to improve functionality.
4 or 5 years ago the community raised a few 1000 $ and Rushabh re-coded the POS. I contributed and made several suggestions…

One of these old suggestions I communicated (again) to Mambai. That is that the POS should know whether the input is from a human or a barcode scanner and change its behavior accordingly. Relatively simple if the system monitors the input speed. Nobody can type characters with the speed of a scanner.
At present…mind I use the offline POS because the online has too many flaws if the cursor is not in entry box nothing will happen. Also I can not use the codes as a filter. I have codes dami1 upto dami30. If I want to select dami10…19. It is not possiible because if I type dami1 it is immediately put in chart. Better to hit the reurn to select dami1 en if not the dam1,dami11…19 can be mouse selected by clicking the ITem.

I have several other wishes…I will write them down soon.

BUT…the key of the matter is thet no POS with many hard-coded settings will please every one.
I believe the only way out of this is investing in a POS that is highly user-configurable.

The user may want to configure the lay-out of the POS screen…eg the sizes of the items. Numer of rows, max numer of columns etc etc
The information shown on “mouse hover” (items code, item name, item desription, price , avail quantity and so on and so on)
Accept negative stock for simple returns
Whether the user wants the intelligence I have suggested above ,or not…
Wether the POS is used on a small screen device (mobile) and should be able to use this device as scanner
Whether ledgers will be immediately updated (a bit slow) or and the end of the day (no realtime stock info)
and so on , etc, and so on Etcetera

I do not believe it is very difficult to make a list of the many wishes…look at the old threads and designs and look at some very modern POS.

And than, I am not a coder so I cannot judge the effort and complexity, a configuration screen should be able to fine-tune the looks and functionality of the POS covering say 90% of the users wish-list.
Minimum hard-coded settings and maximum user configuration

I believe, if not, we continue with half the user community screaming that the POS should be improved.

Code have used da%19, it would filter all da with 19.

Rightly said.

I hope this doesn’t happen.

I would like to know what is the current scope of the pos and what were the initiate objectives set by the core team, also how much time, resource and finance was budgeted for pos.

As I see only @nextchamp.saqib is replying to this discussion, I request someone from the senior management to clear things out, so if there is a need for community finance or resources then we all can contribute.

I am looking for clear information from the senior management.

Hi, thnx for the % trick…used in filters but never realized i could use it in the POS search field thnx

Just what my team had suggested. I should have broken it up into two parts. I have learned from this though.:sweat_smile:

I just discussed this yesterday. I plan to but I’ll only work on this after all the deal breaking problem gets solved. I am keeping this as one of the last change since it would require a lot of moving around and configuring code. I am considering to implement this as an update rather than having it from the get go.

This was also suggested by my team, specifically allowing user to choose whether an intermediate invoice gets generated on each transaction or the normal sales invoice.
However I’ll make sure the end of the day consolidation method won’t have the stock inventory issue I mean user will definitely be able to see how much stock is left from the POS screen.

@felix Thanks a lot.:smiley:

1 Like

I’ll put up a to-do list of all the fixables which I’ll be working upon.

Returns against a credit note is a major problem since it hasn’t been implemented in ERPNext itself. Forget POS, doing the same in ERPNext needs the user to reconcile the invoice with other invoice through payment reconciliation or journal entry.

Please provide me some of the scenarios of returns. Do we give refund the money? Is it ever refunded in cash? Are invoices for return and replacement the same? Can we make 2 transactions one for return and another for replacement?

You have the case where the customer, only wants to return some items of the invoice or the whole purchase.

Whatever the case is, It will always depends on business politics:

  1. Some business return the money; cash or CC.

  2. Some other return the money as a positive balance for the customer in the system, (maybe could be related to loyalty where we translate the credit amount into the amount of points required to make that purchase again).

  3. Some other give you a Credit note based on the previous purchase.

Some thoughts I am very happy to see you interacting with us all, I come here like watching a TV series, very exciting of the new changes!

@nextchamp.saqib do not be overwhelmed, even the top tier PoS systems that cost thousands of dollars PER STORE still have some holes in their functionality.

With respect to returns let me also add my two cents, the following are the three main return scenario

  1. Return for cash…not too common but definitely happens
  2. Return in exchange for another item. This is the most common scenario. Customer may have to add more money if the new item costs more or be refunded in cash or credit if the new item costs less
  3. Return for store credit in which case the customer returns the item and is giving store credit with which she can make purchases at a later date.

The scenario to be adopted in any case is policy based. So I will strongly suggest that this is controlled from the PoS profile page.

And now let me complicate things a bit more on returns. Most stores have a return policy where you must return within a particular number of days. It would be nice if this could also be inculcated.

RETAIL IS DETAIL.

@nextchamp.saqib

What are we supposed to do with the end of day closing figures? It shows up as opening balance the next time the cashier opens a new PoS session.

In real life we are supposed to evacuate the cash to the bank and the credit cards should not show up anyway.

Is there a step post PoS closing am missing ?

Olamide

Ok. I’ll remove this behaviour. So basically at every pos opening user will have to manually enter opening balances right?

If I want to keep it simple I will say yes.

In reality there is something called a “cash drop” in retail.

A cash drop is an amount of cash removed from the cash drawer and placed in the safe or sent to the bank for deposit. … Typically, cash drops are performed to remove excess money from the drawer to be placed in the safe until the balance can be reconciled.

The supervisor can come in periodically and evacuate cash from the cashier’s box and they jointly post a cash drop that moves the cash from the cashiers cash account to a back office cash account.

At the end of the day the final cash drop is done and whatever is left behind (change?) will represent the opening cash position for the next day.

So the behavior now is ok, we just need a “cash drop” document/concept to move the cash out

These are well defines.

Not to forget that in a VAT scenarios, An original invoice number is mandatory on the return invoice, this makes pos return a bit complicated.
In any country which have VAT/Tax needs the original invoice number mentioned on the returned invoice, which is already part of the ERPnext Sales Invoice form but getting it in pos will be tricky.

Idk how we can handle the concept of exchange, means in the return invoice 1 item is returned while another item is purchased. AFAIK ERPnext sales invoice cannot handle positive and negative qty in the same invoice. So you might have to find a way, currently we ask the users to make a return invoice and then make another sales invoice for the newly purchased item.

Yes good point, We have cash transfer document in one of our other software which takes care of this, also good to have it.

I would propose credit card commission percentage to be defined on every CC MOP which can be used during the day closing and make a GL Entry accordingly instead of the accountant doing a manual transaction for this.
Example:
Case where Card company charges 2% per transaction.
Total Card sale for the day = $500
So GL Entry should be

  • Bank Dr. 490
  • Commission on Card Dr. 10
  • Card MOP acc Cr. 500

This is a use case in non VAT/TAX scenario,
While the Tax use case would be

  • Bank Dr. 489.5
  • Commission on Card Dr. 10
  • VAT 5% Dr. 0.5
  • Card MOP Cr. 500

We had this planned for future customization on day closing. BTW this is a standard feature we have seen in most of the POS apps even our small scale pos software has this.

I am not asking too much though I know these are not so important but it is a standard feature, so just putting it out here if you want to add it from the beginning.

@nextchamp.saqib Do you have any new plan on the layout or do you plan to continue with the existing layout of the POS?

I will recommend that your team continues with its design, there is nothing wrong with having two PoS options. Your concept is perfect for a fast pace supermarket environment

Just my thoughts

1 Like

Currently we have paused the work on POS design as we don’t know the future of our apps yet, not sure if we should port it to v12 or not as we have done a lot of changes to the pos in terms of Vat and other small small changes.

Also we had proposed to work with the core team on this but I never got a single reply from the team, which makes me think that they’re not interested.

We might just add few shortcut buttons on the pos for now and use it as it is on V11.

Shortcut button

  • Open Drawer - We planned to just print a break page on a paper for the drawer to open as we cannot have anyway to directly pass the command to the printer without adding alot of codes, like done in case of raw printing.

This button is a must in some retail environment as the client don’t want to give drawer keys to the cashier at all. Which means drawer will only be opened during printing the bill or manually opened using the button mentioned above which is audited with a daily record which in return helps in catching fraud.
Another important but underrated feature of POS. We have heard unbelievable examples of frauds happening in retails which we cannot even think of while developing a pos app until we sit down with the management or the supervisor of a shop floor.

After reading about Event streaming, I think our plan of making a progressive POS webapp with its own db which would sync invoices to the ERPnext was a better solution than event stream in term of the overhead, event streaming bring with it. I understand that it is a robust solution but it has its overhead of having a location server and in a current scenario where everyone is trying to reduce overhead cost and its maintenance pitching someone event streaming will not be easy. Whereas using a webapp would eliminate the need of a local server.

Taking a simple use case of a client having 12 outlets
we will need 1 master server on the cloud, while 12 local server just to maintain event streaming.
We have been pitching clients to use cloud servers to reduce cost but here I see we’re just increasing the cost of the server hardware as well as the maintenance, This solution will only be accepted by companies who are currently using high end ERP like Microsoft dynamic, Sap, Oracle etc.

Should be posting this on Event Streaming post :smiley: but its is related to POS also.