Skip to Content
Menu
This question has been flagged

Hello, we are using the Odoo 16 community edition. I need an option to mass lock sales orders once they are delivered. Any suggestions?

Avatar
Discard
Best Answer

Hi,


* To lock the sales order after delivery, we need to inherit the 'Validate' button in the Delivery Order (stock.picking).


class StockPicking(models.Model):
"""Inherits stock.picking"""
_inherit = 'stock.picking'

def button_validate(self):
"""Call the function for locking the sale order
while clicking on the validate button"""
res = super().button_validate()
self.sale_id.action_done()
return res


This will result in the corresponding sales order being locked whenever the delivery is confirmed.


* For mass locking, we have to add a server action. 


1- Enable developer mode


2- Go to  Settings > Technical > Server Actions



3 - Add new server action.

       Action name: Mass Lock Sale Order

       Model: Sales Order

       Action Do: Execute Python code


       Python Code : 

                         for record in records:

                                   action = record.action_done()



Click the 'Create Contextual Action' button


4- Go to sales orders and filter all the orders that are to be locked.

     To get all delivered orders, add the following filter.






5- Select all the orders and click on the 'Mass Lock Sale Order' from the action menu.




6- You can see all the selected orders are now turned to locked state.




For more information, refer to the following


https://www.cybrosys.com/blog/how-to-lock-confirmed-orders-in-odoo-16-sales-module


*https://youtu.be/DJ-V1ZLYcu0?si=1WdYlGnHgSgy7vmE



Hope it helps.

Avatar
Discard
Related Posts Replies Views Activity
0
Dec 24
1018
2
Apr 25
1349
0
Apr 25
870
0
Mar 25
790
1
Mar 25
1023