By: Nikhil Krishnan

How To Make MRP Order From POS?

Make Manufacturing orders (MRP) orders from POS

Launch automatic MRP orders after selling through POS.
When we make a sales order for a product with BOM, Odoo automatically creates a manufacturing order (mrp order). The product needs to have a Procurement Method for Make to Order and a Supply Method for Manufacturing. Once the sale order gets confirmed, manufacturing order gets generated.

Odoo provide this feature to its end users making the task simpler and painless. Majority of the manufacturing entrepreneurs use this MRP feature for efficient management of their goods, also a few numbers of small-scale markets and restaurants have started availing this feature for their better run. 

For eg: Let us take the case of a shop selling Burgers. Burger has BOM  time of sales as the burger needs a kitchen order. Availing the above feature, without any customization we can use the MRP order as the kitchen order.

In nutshell, we can say that one will be able to sell products through the Point of sale (POS) thereby automatically processing the manufacturing order. This can bring in a great help among smaller enterprises for effectively managing their orders and supply. 


Make MRP orders from POS
The MRP order automatically generates when we proceed a sale through the point of sale.

Let's check how this module work, 



Firstly download and install the module in your Odoo ERP. Then select a product that needs to create a manufacturing order automatically from point of sale. In the product form, there is a sale tab, underneath we can see ‘Point of sale’ heading. At the bottom, we need to enable the option “To Create MRP Order”.


Make sure that, this product has a bill of material (BoM), else system would generate a warning. If you forget to set the BOM or delete it, then MRP order does not get created.


What are the points to be noted while setting the BoM


Every product needs minimum one BoM, then only MRP order gets created during  POS.
If you do not enable the Product Variants, then you can set a BoM with a product and its components.
If you enable the Product Variants (Products can have several attributes, defining variants (Example: size, color...)) then the BoM form will contain extra field Product Variant.

> If you set a BoM for a product template, then you will be able to get that BoM for all the variants.
> If you set a BoM for particular product variants, then that BoM is counted only for that variant.
> So other variants’ BoM is counted as zero. MRP Order is created only when the BoM is available.

Go to POS window, select the same product that mentioned or select a product to have a bom and enable the option to create MRP order.


Select 2  as quantity under the product name Cup of Tea. Make the payment and validate it. After that check your Manufacturing Order.


Here we can see a Manufacturing Order is created with  Product name  Cup of Tea and Quantity=2. We can see the source in the tree view, (POS-Order 00xx-00xx-001)




26/11/2018 - 10:41PM

it is compatible with odoo v12?

Is there any solution like this for Odoo v11?

Niyas Raphy

05/12/2018 - 2:08AM

Currently the module is available only in v10, coming days it will be ported to v11

Muhammad Imran

04/01/2019 - 9:38AM

Hi Cybrosys Thank you for this module. I observed this issue that when POS products more than 10 then this module raise error when creating auto MRP orders. See below error ++++++++ error ++++++++ Odoo Server Error Traceback (most recent call last): File "/home/odoo/odoo-dev/odoo/odoo/", line 642, in _handle_exception return super(JsonRequest, self)._handle_exception(exception) File "/home/odoo/odoo-dev/odoo/odoo/", line 684, in dispatch result = self._call_function(**self.params) File "/home/odoo/odoo-dev/odoo/odoo/", line 334, in _call_function return checked_call(self.db, *args, **kwargs) File "/home/odoo/odoo-dev/odoo/odoo/service/", line 101, in wrapper return f(dbname, *args, **kwargs) File "/home/odoo/odoo-dev/odoo/odoo/", line 327, in checked_call result = self.endpoint(*a, **kw) File "/home/odoo/odoo-dev/odoo/odoo/", line 942, in __call__ return self.method(*args, **kw) File "/home/odoo/odoo-dev/odoo/odoo/", line 507, in response_wrap response = f(*args, **kw) File "/home/odoo/odoo-dev/odoo/addons/web/controllers/", line 895, in call_kw return self._call_kw(model, method, args, kwargs) File "/home/odoo/odoo-dev/odoo/addons/web/controllers/", line 887, in _call_kw return call_kw(request.env[model], method, args, kwargs) File "/home/odoo/odoo-dev/odoo/odoo/", line 689, in call_kw return call_kw_multi(method, model, args, kwargs) File "/home/odoo/odoo-dev/odoo/odoo/", line 680, in call_kw_multi result = method(recs, *args, **kwargs) File "/home/odoo/odoo-dev/custom-addons/pos_mrp_order/models/", line 35, in create_mrp_from_pos print "products", products IOError: [Errno 5] Input/output error +++++++++++++++++++++

Leave a comment


Cybrosys Technologies Pvt. Ltd.
Neospace, Kinfra Techno Park
Kerala, India - 673635


Cybrosys Limited
Alpha House, 100 Borough High Street,
London, Greater London,
SE1 1LB, United Kingdom


Cybrosys Technologies Pvt. Ltd.
1st Floor, Thapasya Building,
Infopark, Kakkanad,
Kochi, India - 682030.


Cybrosys Techno Solutions
The Estate, 8th Floor,
Dickenson Road,
Bangalore, India - 560042

Send Us A Message