Skip to Content
Menú
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
Descartar
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
Descartar
Related Posts Respostes Vistes Activitat
0
de des. 24
1043
2
d’abr. 25
1398
0
d’abr. 25
883
0
de març 25
817
1
de març 25
1074