diff --git a/models/duplicate.py b/models/duplicate.py index 17f972e..bfb030f 100644 --- a/models/duplicate.py +++ b/models/duplicate.py @@ -26,72 +26,102 @@ class opendons_duplicate_partner(models.Model): def find_duplicate_partner(self): self.env['opendons.duplicate_partner'].search([]).unlink() - rules=self.env['opendons.duplicate_rule'].search([('active','=','true')]) + rules=self.env['opendons.duplicate_rule'].search([('is_active','=','true')]) dbl_partner_ids=[] i=1 + for rule in rules: - groupby_fields='' - selected_fields='' - list_field=[] - for f in rule.field_ids: - if i==1:groupby_fields+="'"+f.field+"'" - else:groupby_fields+=",'"+f.field+"'" - list_field.append(f.field) - i=i+1 - selected_fields='' - j=1 - i=i-1 - for f in list_field: - if j==1:selected_fields+=""+f+"" - if j>1 and j1: - - domain='' + if rule.field_ids: + groupby_fields='' + selected_fields='' + list_field=[] + for f in rule.field_ids: + try: + if i==1:groupby_fields+="'"+f.field+"'" + else:groupby_fields+=",'"+f.field+"'" + list_field.append(f.field) + i=i+1 + except: + raise warning(f.field) + selected_fields='' + j=1 + i=i-1 + for f in list_field: + try: + if j==1:selected_fields+=""+f+"" + if j>1 and j1:domain="['&'," - else:domain="[" - - i=1 - for f in list_field: - if pp[f]: - if i==1:domain+="('"+f+"','=','"+pp[f]+"')" - if i>1:domain+=",('"+f+"','=','"+pp[f]+"')" - i=i+1 - domain+=']' - if domain!='[]': + if int(pp['__count'])>1: - partner_dbl=self.env['res.partner'].search(eval(domain)) + domain='' - for partner in partner_dbl: - vals={} - vals['partner_id']=partner.id - self.env['opendons.duplicate_partner'].create(vals) - dbl_partner_ids.append(partner.id) - - action = self.env.ref("contacts.action_contacts").sudo().read([])[0] - - action.update( - { - "domain": [("id", "in", dbl_partner_ids)], - "limit": 5000, - "context":{'view_mode':'tree'} - } - ) - return action + if len(list_field)>0: + + + + i=1 + for f in list_field: + + if pp[f]!='' and pp[f]: + + try: + if i==1:domain+="('"+f+"','=','"+pp[f]+"')" + if i>1:domain+=",('"+f+"','=','"+pp[f]+"')" + except: raise Warning(f+' '+pp[f]) + + i=i+1 + if len(list_field)>1 : domain="['&',"+domain+"]" + else:domain="["+domain+"]" + + + + else:domain="[]" + + + if domain!='[]' and domain!="['&',]" : + + try: + partner_dbl=self.env['res.partner'].search(eval(domain)) + + for partner in partner_dbl: + vals={} + vals['partner_id']=partner.id + self.env['opendons.duplicate_partner'].create(vals) + dbl_partner_ids.append(partner.id) + except: + raise Warning(domain) + + if dbl_partner_ids: + action = self.env.ref("contacts.action_contacts").sudo().read([])[0] + + action.update( + { + "domain": [("id", "in", dbl_partner_ids)], + "limit": 5000, + 'view_mode': 'tree', + 'view_type': 'list' + #"context":{'view_mode':'tree,form'} + } + ) + return action @@ -104,8 +134,22 @@ class opendons_duplicate_rule(models.Model): string='fields', ) - active=fields.Boolean('active' ,default=True) + is_active=fields.Boolean('active' ,default=True) + fields_selected=fields.Char('fields', compute='_fields_selected') + def _fields_selected(self): + for rec in self: + result='' + field_list=rec.field_ids + if field_list: + i=1 + for f in field_list: + if i==1: result+=f.field + else:result+=','+f.field + i=i+1 + rec.fields_selected=result + + class opendons_duplicate_rule_line(models.Model): @@ -140,3 +184,6 @@ class opendons_duplicate_rule_line(models.Model): result.append((key,key)) raise Warning(result) return result + + + diff --git a/models/partner.py b/models/partner.py index b1d2a6a..0c888db 100644 --- a/models/partner.py +++ b/models/partner.py @@ -4,37 +4,12 @@ from psycopg2 import sql, DatabaseError from werkzeug import utils import re - - - - - - +from string import ascii_uppercase class partner(models.Model): _inherit = 'res.partner' - # @api.depends('qualifier_ids.partner_id') - # def _compute_text_qualifier_count(self): - # # The current user may not have access rights for donations - # for partner in self: - # try: - # partner.text_qualifier_count = len(partner.qualifier_ids) - # except Exception: - # partner.text_qualifier_count = 0 - - # @api.depends('qualifier_ids.partner_id') - # def _compute_bool_qualifier_count(self): - # # The current user may not have access rights for donations - # for partner in self: - # try: - - # for qualifier_id in partner.qualifier_ids: - - # partner.bool_qualifier_count =self.env['opendons_qualifier.partnerqualifier'].search([(partner.qual_i - # except Exception: - # partner.bool_qualifier_count = 0 - + def _compute_address_count(self): # The current user may not have access rights for donations for partner in self: @@ -82,16 +57,7 @@ class partner(models.Model): string='Qualifier', readonly=True ) - # text_qualifier_count = fields.Integer( - # compute='_compute_text_qualifier_count', - # string="# of Qualifiers", - # readonly=True - # ) - # bool_qualifier_count = fields.Integer( - # compute='_compute_bool_qualifier_count', - # string="# of Qualifiers", - # readonly=True - # ) + address_ids = fields.One2many( 'opendons.partneraddress', @@ -100,12 +66,7 @@ class partner(models.Model): readonly=True ) - # request_ids = fields.One2many( - # 'opendons.request', - # 'partner_ids', - # string='Request', - # readonly=True - # ) + request_ids = fields.Many2many('opendons.request', 'request_partner_rel', 'partner_id', 'request_id', string='requests') operation_ids = fields.Many2many('opendons.operation', 'operation_partner_rel', 'partner_id', 'operation_id', string='operations') operation_excl_ids = fields.Many2many('opendons.operation', 'operation_excl_partner_rel', 'partner_id', 'operation_id', string='excluded operations') @@ -156,7 +117,7 @@ class partner(models.Model): readonly=True ) - key=fields.Integer( + key=fields.Char( compute='_compute_key', string="Key", store=True, @@ -173,29 +134,22 @@ class partner(models.Model): def _compute_all_key(self): - #for rec in self.env: - #rec.write({'key':3}) - #raise Warning(rec.id) + for rec in self.env['res.partner'].search([]): rec.key=int(rec.id)*40456 - #raise Warning(len()) + def _update_source(self): - #for rec in self.env: - #rec.write({'key':3}) - #raise Warning(rec.id) + for rec in self.env['res.partner'].search([]): rec.source='joomla' - #raise Warning(len()) + def _remove_source(self): - #for rec in self.env: - #rec.write({'key':3}) - #raise Warning(rec.id) self.env["res.partner"].search([('source','=','joomla')]).unlink() - #raise Warning(len()) + @api.onchange('street') diff --git a/views/duplicate.xml b/views/duplicate.xml index 1d61492..a9a02a7 100644 --- a/views/duplicate.xml +++ b/views/duplicate.xml @@ -7,8 +7,8 @@ opendons.duplicate_rule - - + + @@ -32,7 +32,7 @@
- +