[V7] Offline POS Functionality

Hi @wale,

Seems account head in Sales Taxes and Charges Template has not defined, I have make some changes please check now.

Thanks, Rohit

Hi @wale,

Please check the expiry date of the batch number.

Thanks, Rohit

Hi @wale,

I have fixed this issue, we’ll release it soon.

Thanks, Rohit

Hi @rohit_w

I believe you’re referring to the Batch Number issue? The other issue with offline records not syncing still persists. Please find log below

MandatoryError: [Sales Invoice, SINV-00266]: account_head

https://beta.erpnext.com/socket.io/?EIO=3&transport=polling&t=1470131351805-21 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
https://beta.erpnext.com/socket.io/?EIO=3&transport=polling&t=1470131358815-22 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
https://beta.erpnext.com/socket.io/?EIO=3&transport=polling&t=1470131367813-23 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
https://beta.erpnext.com/socket.io/?EIO=3&transport=polling&t=1470131374804-24 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
https://beta.erpnext.com/socket.io/?EIO=3&transport=polling&t=1470131381816-25 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
https://beta.erpnext.com/socket.io/?EIO=3&transport=polling&t=1470131388818-26 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
https://beta.erpnext.com/socket.io/?EIO=3&transport=polling&t=1470131396805-27 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
https://beta.erpnext.com/socket.io/?EIO=3&transport=polling&t=1470131402815-28 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
https://beta.erpnext.com/ Failed to load resource: the server responded with a status of 417 (EXPECTATION FAILED)
desk.min.js:139 Traceback (most recent call last):
  File "/home/frappe/frappe-bench/apps/frappe/frappe/app.py", line 55, in application
    response = frappe.handler.handle()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/handler.py", line 19, in handle
    execute_cmd(cmd)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/handler.py", line 36, in execute_cmd
    ret = frappe.call(method, **frappe.form_dict)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/__init__.py", line 879, in call
    return fn(*args, **newargs)
  File "/home/frappe/frappe-bench/apps/erpnext/erpnext/accounts/doctype/sales_invoice/pos.py", line 175, in make_invoice
    submit_invoice(si_doc, name)
  File "/home/frappe/frappe-bench/apps/erpnext/erpnext/accounts/doctype/sales_invoice/pos.py", line 214, in submit_invoice
    save_invoice(e, si_doc, name)
  File "/home/frappe/frappe-bench/apps/erpnext/erpnext/accounts/doctype/sales_invoice/pos.py", line 219, in save_invoice
    si_doc.save(ignore_permissions=True)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 242, in save
    return self._save(*args, **kwargs)
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 259, in _save
    self.insert()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 213, in insert
    self._validate()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 387, in _validate
    self._validate_mandatory()
  File "/home/frappe/frappe-bench/apps/frappe/frappe/model/document.py", line 591, in _validate_mandatory
    name=self.name))
MandatoryError: [Sales Invoice, SINV-00266]: account_head

https://beta.erpnext.com/socket.io/?EIO=3&transport=polling&t=1470131408781-29 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
https://beta.erpnext.com/socket.io/?EIO=3&transport=polling&t=1470131414388-30 Failed to load resource: the server responded with a status of 502 (Bad Gateway)
https://beta.erpnext.com/socket.io/?EIO=3&transport=polling&t=1470131420128-31 Failed to load resource: the server responded with a status of 502 (Bad Gateway)

Hi @rohit_w

Trust you’re doing well. Any update on this?

Thanks

Kind regards,

Hi @wale,

We have fixed it, can you please check.

Thanks, Rohit

When I make POS sales I found the created sales invoice is Draft not submitted . Why ?

Hi @hfarid,

This issue has already fixed, kindly pull latest update and check. Also if stock is not available then system keeps the invoice in draft mode.

Thanks, Rohit

I am on version 7.0.18

Hi @hfarid

Did you try to submit the invoice? Any errors during submission of invoice?
System keeps the invoice in draft if there are some errors like stock deficiency, customer account issue etc and make the scheduler log against the error. So in such cases user has to manually submit the draft invoice.

Kindly pull latest update and check, this issue is already fixed

Thanks, Rohit

I have updated to last release and the problem solved.

Thanks. Rohit

hi @rohit_w

Trust you’re doing great. It appears that searching for item using Serial Number is still not working

Also, when you select customer and item in a POS transaction but don’t pay and instead open a new transaction, the details of the incomplete transaction automatically moves to offline records with status as ‘Paid’! Its fine that the incomplete transaction automatically gets saved in offline records but status should not be ‘Paid’. There also isn’t any way to delete the transaction from offline records if the user wishes to discard it

Please help look into these. I’m testing on https://beta.erpnext.com

Thanks

Kind regards,

Hi @wale,

It’s working properly, if POS profile has warehouse then you can only search the serial no which are available in pos profile’s warehouse. If warehouse is not defined in POS profile then you can search any serial no on POS screen.

When user click on Pay button, on payment screen system set default payment as Cash, you have to clear it. If you submit this record then status become Not Paid else Draft.

Thanks, Rohit

Hi @rohit_w

Thanks for your response. I tried it using the appropriate warehouse and it worked :slight_smile:
I however noticed that once an item is selected using a serial number, the user can then increase the quantity without entering any further serial numbers. The resulting invoice then remains in draft until other serial numbers are added… this defeats the purpose and can lead to serious issues because it means the sales people can sell serialized items without capturing all the serial numbers!

Regarding the other issue, it seems you didn’t fully get my point. Let me try to explain more clearly:

  1. In offline mode, select a customer and an item (Do NOT click pay button)
  2. Click on ‘New’ button for fresh POS transaction
  3. Check offline records

You will find the incomplete transaction (which you did not click pay button for) in the list with status as ‘Paid’! Also, there is no way to discard this incomplete transaction except going through with the submission as you described

Please let me know if you require any further clarification

Thanks

Kind regards,

Thanks for reporting an issue, will fix it.

So you meant user need a button to delete the records from the offline POS?

Thanks, Rohit

Hi @rohit_w

Please find my suggestions below:

  1. When payment is not yet done as outlined in the scenario I described above, status in offline records should be ‘Pending’ or something similar
  2. There should be a button for the user to delete all such ‘Pending’ transactions from offline records screen
  3. Once the transaction is submitted in POS screen (i.e Payment is done), user should not be able to delete from offline records screen any more

Thanks

Such an important topic! I am amazed it wasn’t resolved, it seems few people use this in a retail environment. As a matter of fact; issues with the offline invoices can cripple the entire pos module and you will have errors popping up. Why cant we clear the offline invoices?

Hi @noetico,

Sorry for the inconvenience
We are working on the feature to delete the offline records and soon we’ll release this feature.

Thanks @rohit_w

That will be great‎. Is it possible to replace the pos module with the older versions so we can get the old pos? Will the framework allow for this? Cus’ everything else is perfect just the pos. Also it’s lacking discounts, there’s also a possibility that the records you make on one instance (like local instance) will affect another instance; example; when I had this issue; I used the same browser to login to my erpnext.com account and my online pos started popping up debit to is required as if it was trying to use records from my local install; please have a critical look at this; maybe there should be a way to ensure the records stay unique to an installation; maybe some kind of imprint that maps the source server?

Kent@Live Mail

Hi @noetico,

No you can not replace the new POS with the older version of POS.

You can add the discount by enabling apply discount in the POS Profile.

Are you using the same site name to access the both local and online instance? I used local instance(localhost:8000) and online instance, but never found such an issues

Thanks