@@ -165,28 +165,54 @@ func (r *Relation) UpdateRecord(record int64, values interface{}) {
165165// https://www.odoo.com/documentation/13.0/reference/orm.html#odoo.models.Model.write 
166166func  (r  * Relation ) DeleteRecord (record  int64 ) {
167167	r .v  =  append (r .v , newTuple (2 , record , 0 ))
168+ 	r .ids  =  []int64 {}
168169}
169170
170171// RemoveRecord is an helper to remove an existing record of one2many or many2many. 
171172// https://www.odoo.com/documentation/13.0/reference/orm.html#odoo.models.Model.write 
172173func  (r  * Relation ) RemoveRecord (record  int64 ) {
173174	r .v  =  append (r .v , newTuple (3 , record , 0 ))
175+ 	r .ids  =  []int64 {}
174176}
175177
176178// AddRecord is an helper to add an existing record of one2many or many2many. 
177179// https://www.odoo.com/documentation/13.0/reference/orm.html#odoo.models.Model.write 
178180func  (r  * Relation ) AddRecord (record  int64 ) {
179181	r .v  =  append (r .v , newTuple (4 , record , 0 ))
182+ 	r .ids  =  addRecord (r .ids , record )
180183}
181184
182185// RemoveAllRecords is an helper to remove all records of one2many or many2many. 
183186// https://www.odoo.com/documentation/13.0/reference/orm.html#odoo.models.Model.write 
184187func  (r  * Relation ) RemoveAllRecords () {
185188	r .v  =  append (r .v , newTuple (5 , 0 , 0 ))
189+ 	r .ids  =  []int64 {}
186190}
187191
188192// ReplaceAllRecords is an helper to replace all records of one2many or many2many. 
189193// https://www.odoo.com/documentation/13.0/reference/orm.html#odoo.models.Model.write 
190194func  (r  * Relation ) ReplaceAllRecords (newRecords  []int64 ) {
191195	r .v  =  append (r .v , newTuple (6 , 0 , newRecords ))
196+ 	r .ids  =  newRecords 
197+ }
198+ 
199+ func  addRecord (records  []int64 , record  int64 ) []int64  {
200+ 	for  _ , r  :=  range  records  {
201+ 		if  r  ==  record  {
202+ 			return  records 
203+ 		}
204+ 	}
205+ 	return  append (records , record )
206+ }
207+ 
208+ func  removeRecord (records  []int64 , record  int64 ) []int64  {
209+ 	newRecords  :=  make ([]int64 , len (records )- 1 )
210+ 	for  idx , r  :=  range  records  {
211+ 		if  r  ==  record  {
212+ 			copy (newRecords , records [0 :idx ])
213+ 			copy (newRecords [idx :], records [idx + 1 :])
214+ 			return  newRecords 
215+ 		}
216+ 	}
217+ 	return  records 
192218}
0 commit comments