- Mailing Lists
- Contributors
- Odoo 9.0: Sale order line and computed field
Contributors mailing list archives
contributors@odoo-community.org
Browse archives
- By thread
-
By date
- January 2025 11
- December 2024 89
- November 2024 117
- October 2024 121
- September 2024 62
- August 2024 70
- July 2024 104
- June 2024 160
- May 2024 40
- April 2024 63
- March 2024 104
- February 2024 111
- January 2024 75
- December 2023 46
- November 2023 94
- October 2023 101
- September 2023 91
- August 2023 103
- July 2023 64
- June 2023 92
- May 2023 69
- April 2023 47
- March 2023 106
- February 2023 49
- January 2023 93
- December 2022 50
- November 2022 39
- October 2022 152
- September 2022 73
- August 2022 38
- July 2022 141
- June 2022 87
- May 2022 59
- April 2022 31
- March 2022 68
- February 2022 77
- January 2022 98
- December 2021 75
- November 2021 74
- October 2021 66
- September 2021 68
- August 2021 50
- July 2021 123
- June 2021 86
- May 2021 90
- April 2021 73
- March 2021 146
- February 2021 87
- January 2021 38
- December 2020 159
- November 2020 100
- October 2020 277
- September 2020 193
- August 2020 94
- July 2020 85
- June 2020 158
- May 2020 50
- April 2020 172
- March 2020 121
- February 2020 210
- January 2020 58
- December 2019 35
- November 2019 97
- October 2019 165
- September 2019 118
- August 2019 86
- July 2019 56
- June 2019 124
- May 2019 77
- April 2019 84
- March 2019 64
- February 2019 53
- January 2019 80
- December 2018 64
- November 2018 31
- October 2018 55
- September 2018 69
- August 2018 28
- July 2018 52
- June 2018 34
- May 2018 81
- April 2018 98
- March 2018 47
- February 2018 77
- January 2018 70
- December 2017 64
- November 2017 159
- October 2017 118
- September 2017 161
- August 2017 18
- July 2017 41
- June 2017 56
- May 2017 106
- April 2017 110
- March 2017 112
- February 2017 69
- January 2017 94
- December 2016 115
- November 2016 132
- October 2016 264
- September 2016 124
- August 2016 143
- July 2016 44
- June 2016 137
- May 2016 84
- April 2016 80
- March 2016 130
- February 2016 98
- January 2016 109
- December 2015 140
- November 2015 189
- October 2015 335
- September 2015 136
- August 2015 208
- July 2015 43
- June 2015 64
- May 2015 8
Odoo 9.0: Sale order line and computed field
by
mehdi.ghezal
Dear Contributors,
I come across a problem with the Odoo Sale module (Odoo 9.0) and my modules ; a bunch of modules that work together actually. I cannot figure out if it's my modules wrong or if it's an issue in Odoo, so I seek some feedback.
I already look in Github, hunting for some issue and each time I think it could be related, the issue still the same after I apply the patch in my Odoo instance :(
For make it more simple, let's say I have one unique module that add a new computed field in sale.order.line. This field allow the user to see in realtime what will be the remaining (not reserved) quantity in stock if this sale order is confirmed.
Let's say I have a Product A with 100 units in stock and 1 delivery that reserve 10 units. If the user create a sale order with 1 line of Product A with a quantity of 10, the new field will show a remaining quantity of 80 units: 90 in stock not reserved - 10 requested. If the user update the quantity to 20, the new field will show 70 units remaining.
This feature work fine even if I notice that the computed method is called many time when the user update the quantity.
For keep it simple, let's say I update my module to allow the user to make a stock reservation based on the sale order without confirm it. For this purpose, a stock picking is created, with a stock move and everything is assigned ; like an standard transfert in Odoo.
The update also add two new fields:
- Sale order line: reservation_move_ids = fields.One2many(comodel_name='stock.move', inverse_name='reservation_sale_order_line')
- Stock move: reservation_sale_order_line = fields.Many2one(comodel_name='sale.order.line')
Theses two fields are used to keep track of reservations per sale.order.line. Obviously when the reservation is made, the sale order line is write in the stock move but keep it out of the scope for simplicity.
I keep the same example as before so ; I have a Product A with 100 units in stock and 1 delivery that reserve 10 units. If the user create a sale order with 1 line of Product A with a quantity of 10, the remaining quantity field will show 80 units: 90 in stock not reserved - 10 requested.
If the user, reserve the sale order ; the remaining quantity field will now show 70 units: 80 in stock not reserved - 10 requested. It seems correct but in my case, when the sale order is confirmed the reservation is cancelled ; so the correct value for the remaining quantity should be 80 units.
So I update the method that compute the remaining quantity to do the following operation: 80 in stock not reserved - 10 requested + 10 reserved by the line. For know how many product is reserved by a sale order line I use the new field reservation_move_ids.
If I refresh and display the sale order in view mode, everything work fine. If I edit the sale order and modify the quantity of the sale order line the remaining quantity go wrong but when I save it's correct again...
Like I said before, when I check the call of the computation method, I notice it's called many time but now I also notice that the result is not the same between each call.
I make a single module that bundle everything and a video for illustrate the behavior.
You can see the video here : https://drive.google.com/file/d/1sSpT4awJFJmfBe9JkTOiix4NqJTL0r7-/view
You can download / see the module here : https://drive.google.com/drive/folders/1xM1WELDeVRlVHHvOb0J5qb-upP2CGzvq
Have you any clue about what's happen ?
An issue or did I do something wrong ?
Your feedback will be greatly appreciate.
Best regards,
Mehdi