Still on the issues encountered by retailers in trying to use ERPNext for business .
Over the last two years or so, ERPNext has made a lot of progress in PoS, from introducing offline PoS mode (thank you @rohit_w ) , to designing a better user interface as well as the awesome job done by @fkardame and his team on PoS Bahrain.
We have also eliminated some nagging issues like duplicated/triplicated invoices (thank you @tundebabzy) and slow systems.
But we have one issue that seems to be defying a logical solution. This is the challenge of missing invoices from offline PoS transactions.
A sales invoice is generated from offline PoS, the receipt is printed by the cashier, cache is NOT cleared and yet 1 out of 150 invoices do not sync to the server and also are not on the local client. They just disappear.
If you do not run a high traffic retail business you might not witness this anomaly. But if your location does from 300 and above receipts per day, you will experience it.
Can we as a team have a look at this? I am stumped because I do not even have an inkling of what is causing this. For duplicated invoices we had an idea of the root cause and fixed this, but how do you fix a problem whose cause you do not know?
@wale and @noetico you are my partners in this Retail ERPNext journey, any ideas ? Do you also experience this?
This is an unfortunate issue and may well be responsible for what overs some people have complained about.
One question comes to mind; is this the same on say Chrome and Firefox? It will be a good test to try another browser for a good period to see if the occurrence rate is similar to what it is currently. This is important just to eliminate the possibility of some code incompatibility between the POS code and browser implementations.
From the erpnext side of things; hard to tell what, but must be in the javascript code. Will I be correct to say the team uses some of the most cutting edge code to achieve such great feats, so this could be a bug that needs a dedicated look.
Is it a silly idea to think of having the option - option in addition to current design - an sqlite database for those using this offline pos in critical operations. So installers can drop in an sqlite file on each computer and make the necessary configurations and this serves as the âcacheâ database for offline invoices. Sqlite can always be accessed to pull out and reconcile records that are missing on the server, this will be accessed just locally as recommended by sqlite.
Just a thought. This is a huge trouble for any business.
Hi, I can tell you we have seen this happen on Chrome and FireFox. Issue is most probably not related browser. We have seen invoices missing for less than 100 transactions.
Our developer also couldnât find anything as there is no log of the missing invoice. It was only when customer comes to return, when cash is more than expected or the card balance is higher than daily sales that one knows of the missing invoice.
We feel each POS should have a SQL. One option is PouchDB
If may or may not fix the issue. If it does not work then we would know that it is not the browser at fault. Right now the root cause of this issue in unknown.
As with all things JavaScript, I always have this fear of âbrittlenessâ. What if some very little part of the script somewhere just has some uncaught exceptions and simply fails to update the cache. More reason a local cache db is a good idea, so POS is pushing using reliable SQL statements and on updating code just makes standard queries from sqlite and updates main database. Another advantage as stated above also is that it will finally secure the offline POS as admins can plan to secure the local sqlite file within the os, as it is we canât avoid the fact that relying on the browser cache is actually a very very expensive risk.
What is the next steps with respect to local db? I am willing to contribute to this project if it can be kick started.
Another advantage of a local db is that we will not need to rely on âsyncingâ to determine the end of day figure for each cashier, we can write a script querying the local db for this.
Anyone with an idea of how to proceed ? We cannot all just sit back and absorb this huge risk!
Iâve never handled any such projects on erpnext, but maybe you can post as a job (if thatâs how itâs done).
Maybe we can call it something like âPOSQlite for ERPNextâ or âLoDB for ERPNextâ, push the objectives on the job board and see what the experienced developers think.
Truly it will be one of the greatest things to happen to erpnext⌠It may be under estimated by many not in the retail segment but for those who know, POS issues are the worst, it can outrightly discredit a software, instantly dropping confidence.
Itâs a crucial point that relies heavily on the integrity of the system, unlike office style sales orders, invoices and other types where the user can see what is happening to a greater extent, on POS the cashier has minimal access and the business relies on the absolute correctness of transactions posted from POS.
I have been reading around for sometime now about local storage. I am not a developer so cant comment on the code aspect. However, I have few questions in ERPNext deployment
Is the localstoarge Persistent or Temporary Type.
What is the maximum limit of storage. Every browser type has different storage capacity.
Does ERPNext POS data fill the local storage to near of the limit or somewhere close to it.
What usually should be the ideal storage limit of the computer on which the POS is running,
Maybe the issue has nothing to do with POS rather it would be type of browser and its localstorage settings.
@olamide_shodunke I have asked my developer to look finding way of using SQLite or Pouch db instead of localstorage. PM me if you are interested in funding some part of the job. Any financial help is always welcome.
Really not sure at this stage. It is one of the possibilities. Many factors contribute to the breach like item master data, users using same browser for other work like watching YouTube, available disk space, cache settings etc.
Its one storage for everything user does on the browser which can be using ERPNext and other applications.
Maybe one way is to monitor the size of the local storage using something like the suggestion here but embedding the size in the POS page so that you can start to see when it reaches the danger point of space consumption:
See space consumption for a dormant POS profile
One can then stress test by posting a large number of POS entries online/offline and seeing where things start to disappear or what happens when the upper limit of localstorage is hit before a synchronise occurs