Are there plans to implement modular/customizable items in POS?

I posted this as an issue on Github before I found out about this forum…sorry! I’m still pretty new to ERPNext.

Is it currently in the pipeline to allow modular or customizable items in the POS, similar to functionality you would see in a restaurant or coffee shop?

For example, in a coffee shop you may have seven different types of lattes. But when ordering each latte the customer may request nonfat milk, may request an extra espresso shot, etc. The current system for item variants is insufficient for this purpose due to the sheer number of possibilities.

The solution would be to allow some items to be associated with others in the POS. So I could have a mocha with three variants (for three sizes). Then I can have an item called “espresso shot” that is priced at $0.50. When using the POS, in response to the customer inquiry, I could select a medium mocha, tap the added mocha in the POS, and then add the espresso shot.

I’m still familiarizing myself with ERPNext, but implementing this change would probably require something like:

  • Adding a Boolean attribute to the Item doctype called something like “Can be added to other items”
  • Adding a field in the sales_invoice_item doctype that allows an item to reference another item in the same sales invoice as a parent. (May not work…not sure if you can add a foreign key to an item in the same table in ERPNext?)
  • Updating POS interface to allow selection of addons. This would require allowing selected items to be “clickable” in the POS, and once clicked upon all items with a value of “true” for the “Can be added to other items” attribute would appear. This would also require disaggregating multiple items of the same type (so you can apply an add-on item to just one of them).

I’m new to ERPNext and still learning Frappe. Does this sound like something that can be implemented? This is perhaps one of the single biggest obstructions to allowing ERPNext to take off in small business retail environments. Many POS solutions offered for free that are integrated with payment gateways (Square, PayPal Here, etc.) offer this functionality.

1 Like

@mattster42 welcome to the forum!

This functionality is not available yet in ERPNext. There is a major refresh coming in version 8, but it won’t have this.

To get this started, share a few screenshots on how it can be implemented, get a few more users interested, and then maybe someone will find out a way to get it done.

Sure thing. Check these out!

Above is a rough mockup of the POS and what it would look like with two Mochas added. Now, let’s assume the cashier taps on the mocha item that’s already added to the POS (shown by the blue circle).

In this concept, a window would open showing all the items that are designated as modifiers. The cashier taps on espresso shot.

And here we see the effect. One of the mochas is split off and the espresso shot is associated with it. This allows the barista to know that one of the mochas he is making needs an extra shot.

We can see why conceptually this would be in addition to the item template model, not replacing it. A mocha might come in only three sizes, which means we could make a template and then size-based versions. But a coffee shop would have a huge number of potential customizations to a drink, making the template model impossible here.

Without being an expert on how Frappe works, I am optimistic this could be done without creating a new DocType. I can make an Espresso Shot item same as any other item, except there would be an option I would mark to designate the Espresso as an add-on item. That would keep it from appearing in the main item selection menu in the POS and have it only show up when modifying an item. Another change would be to have a Sales Invoice item be able to be associated with another, and then of course the POS has to be able to render this.

This is a functionality that is absolutely vital to use the POS in a cafe or restaurant setting. Implementing this functionality would also give ERPNext an additional advantage over Odoo, as Odoo’s POS also cannot do this.