|
@@ -14,7 +14,7 @@ class MassEditingWizard(models.TransientModel):
|
|
|
@api.model
|
|
|
def fields_view_get(self, view_id=None, view_type='form', toolbar=False,
|
|
|
submenu=False):
|
|
|
- result =\
|
|
|
+ result = \
|
|
|
super(MassEditingWizard, self).fields_view_get(
|
|
|
view_id=view_id,
|
|
|
view_type=view_type,
|
|
@@ -420,6 +420,8 @@ class MassEditingWizard(models.TransientModel):
|
|
|
fields_obj = self.env['ir.model.fields']
|
|
|
model_obj = self.env[self._context.get('active_model')]
|
|
|
model_rec = model_obj.browse(self._context.get('active_ids'))
|
|
|
+ model_id = self.env['ir.model'].search([
|
|
|
+ ('model', '=', self._context.get('active_model'))])
|
|
|
values = {}
|
|
|
for key, val in vals.items():
|
|
|
if key.startswith('selection_'):
|
|
@@ -429,14 +431,35 @@ class MassEditingWizard(models.TransientModel):
|
|
|
values.update({split_key: vals.get(split_key, False)})
|
|
|
elif val == 'remove':
|
|
|
values.update({split_key: False})
|
|
|
- elif val == 'remove_m2m':
|
|
|
+ elif val in ['remove_m2m', 'remove_m2m_all']:
|
|
|
+ m2m_list = []
|
|
|
if vals.get(split_key):
|
|
|
- m2m_list = []
|
|
|
for m2m_id in vals.get(split_key)[0][2]:
|
|
|
m2m_list.append((3, m2m_id))
|
|
|
+ if m2m_list:
|
|
|
values.update({split_key: m2m_list})
|
|
|
- elif val in ['remove_o2m', 'remove_m2m_all']:
|
|
|
- values.update({split_key: [(5, 0, [])]})
|
|
|
+ else:
|
|
|
+ values.update({split_key: [(5, 0, [])]})
|
|
|
+ elif val == 'remove_o2m':
|
|
|
+ # model_fieds will return the particular model
|
|
|
+ # in order to get the field of the model
|
|
|
+ # and its relation.
|
|
|
+ model_fields = self.env['ir.model.fields'].search(
|
|
|
+ [('name', '=', split_key),
|
|
|
+ ('model_id', '=', model_id and model_id.id)])
|
|
|
+ # field_model is relation of Object Relation
|
|
|
+ field_model = tools.ustr(model_fields and
|
|
|
+ model_fields.relation)
|
|
|
+ # field relation is relation field of O2m
|
|
|
+ field_relation = tools.ustr(
|
|
|
+ model_fields and
|
|
|
+ model_fields.relation_field)
|
|
|
+ # remove_ids is return O2m field particular ids
|
|
|
+ remove_ids = self.env[field_model].search(
|
|
|
+ [(field_relation, 'in',
|
|
|
+ self._context.get('active_ids'))])
|
|
|
+ o2m_list = [(2, rmv_id.id) for rmv_id in remove_ids]
|
|
|
+ values.update({split_key: o2m_list})
|
|
|
elif val == 'add':
|
|
|
if vals.get(split_key, False):
|
|
|
m2m_list = []
|
|
@@ -463,28 +486,28 @@ class MassEditingWizard(models.TransientModel):
|
|
|
if set_val == 'set_fix':
|
|
|
tot_val = split_key_data + split_val
|
|
|
elif set_val == 'set_per':
|
|
|
- tot_val = split_key_data +\
|
|
|
+ tot_val = split_key_data + \
|
|
|
(split_key_data * split_val) / 100.0
|
|
|
# Subtraction
|
|
|
elif val == 'val_sub':
|
|
|
if set_val == 'set_fix':
|
|
|
tot_val = split_key_data - split_val
|
|
|
elif set_val == 'set_per':
|
|
|
- tot_val = split_key_data -\
|
|
|
+ tot_val = split_key_data - \
|
|
|
(split_key_data * split_val) / 100.0
|
|
|
# Multiplication
|
|
|
elif val == 'val_mul':
|
|
|
if set_val == 'set_fix':
|
|
|
tot_val = split_key_data * split_val
|
|
|
elif set_val == 'set_per':
|
|
|
- tot_val = split_key_data *\
|
|
|
+ tot_val = split_key_data * \
|
|
|
(split_key_data * split_val) / 100
|
|
|
# Division
|
|
|
elif val == 'val_div':
|
|
|
if set_val == 'set_fix':
|
|
|
tot_val = split_key_data / split_val
|
|
|
elif set_val == 'set_per':
|
|
|
- tot_val = split_key_data /\
|
|
|
+ tot_val = split_key_data / \
|
|
|
(split_key_data * split_val) / 100
|
|
|
data.write({split_key: tot_val})
|
|
|
if values:
|