From 261a9e8de182968cac0996f46afaa78de9c008cb Mon Sep 17 00:00:00 2001 From: root Date: Thu, 21 Apr 2022 12:40:15 +0000 Subject: [PATCH] #26 gerer les entites par societe --- __manifest__.py | 1 + models/operation.py | 35 +++++++++++++++++--------- models/payment_batch.py | 13 ++++++---- models/qualifier.py | 16 ++++++++++-- models/relationship.py | 16 ++++++++++-- models/returnmail.py | 7 ++++++ security/security.xml | 54 +++++++++++++++++++++++++++++++++++++++++ views/operation.xml | 2 ++ views/partner.xml | 2 -- 9 files changed, 124 insertions(+), 22 deletions(-) create mode 100644 security/security.xml diff --git a/__manifest__.py b/__manifest__.py index 307b2e2..7f377d9 100644 --- a/__manifest__.py +++ b/__manifest__.py @@ -25,6 +25,7 @@ # always loaded 'data': [ 'security/ir.model.access.csv', + 'security/security.xml', 'views/qualifier.xml', 'views/address.xml', 'views/email.xml', diff --git a/models/operation.py b/models/operation.py index 37576f1..1dea4d5 100644 --- a/models/operation.py +++ b/models/operation.py @@ -28,14 +28,24 @@ class opendons_operation(models.Model): _name = 'opendons.operation' _description = 'opération marketing : mailing, emailing evenements' _inherit = ['mail.thread'] + _check_company_auto = True #_order = "__last_update desc" #code=fields.Char(string='Code',required=True, translate=True,track_visibility='always') name=fields.Char(string='Name',required=True, translate=True,copy=False,default='operation',track_visibility='always') partner_count = fields.Integer(string="count",readonly=True) - exported_date=fields.Date(string='Exported Date',track_visibility='always') + exported_date=fields.Date(string='Exported Date',track_visibility='always', readonly=True) #end_date=fields.Date(string='Date end',required=True, translate=True,track_visibility='always') partner_ids = fields.Many2many('res.partner', 'partner_operation_rel', 'partner_id', 'operation_id', string='partners') #contacts exclus de l'opération + company_id = fields.Many2one( + "res.company", + string="Company", + required=True, + states={"exported": [("readonly", True)]}, + default=lambda self: self.env.company + + ) + partner_excl_ids=fields.Many2many('res.partner', 'partner_excl_operation_rel', 'partner_id', 'operation_id', string='excluded partners') chanel=fields.Selection([ ('mail', 'Mailing'), @@ -62,10 +72,10 @@ class opendons_operation(models.Model): ondelete='restrict', default=_default_currency ) - _sql_constraints = [ - ('name_uniq', 'unique (name)', "Name already exists !") + # _sql_constraints = [ + # ('name_uniq', 'unique (name)', "Name already exists !") - ] + # ] number_of_sending = fields.Integer( compute='_compute_number_of_sending', @@ -192,11 +202,7 @@ class opendons_operation(models.Model): segexcl=self.env['opendons.segment'].search(['&',('operation_id','=',self.id),('exclusion','=',True)]) segments=self.env['opendons.segment'].search(['&',('operation_id','=',self.id),('exclusion','=',False)],order='sequence asc') - #[["id","not in",[1,3,7,8,10]]] - #["&",["id","not in",[22]],["id","not in",[1,3,7,8,10]]] - - #List of Domain operators: ! (Not), | (Or), & (And) - #List of Term operators: '=', '!=', '<=', '<', '>', '>=', '=?', '=like', '=ilike', 'like', 'not like', 'ilike', 'not ilike', 'in', 'not in', 'child_of' + i=1 @@ -246,7 +252,7 @@ class opendons_operation(models.Model): sg_1=sg i=i+1 - self.exported_date=fields.Date.context_today(self) + self.exported_date=fields.Date.context_today(self, readonly=True) return True @@ -254,8 +260,15 @@ class opendons_operation(models.Model): @api.model def create(self,vals): - + + op=self.env['opendons.operation'].search(['&',('name','=',vals['name']),('company_id','=',int(self.env.user.company_id))]) + + if "company_id" in vals: + self = self.with_company(vals["company_id"]) + + if op : raise Warning('name already exist') res=super(opendons_operation, self).create(vals) + raise Warning(res.company_id) #création du segment d'exclusion vals2={} vals2['operation_id']=res.id diff --git a/models/payment_batch.py b/models/payment_batch.py index 3ab28b3..0ff8a9f 100644 --- a/models/payment_batch.py +++ b/models/payment_batch.py @@ -91,11 +91,14 @@ class opendons_payment_batch(models.Model): currency_field='currency_id', ) - # payment_lines = fields.One2many( - # 'opendons_payment_batch.lines', - # 'payment_batch_id', - # string='Payment lines', - # track_visibility='onchange') + + company_id = fields.Many2one( + "res.company", + string="Company", + required=True, + default=lambda self: self.env.company + + ) @api.onchange('operation_id') def _onchange_operation_id(self): res = {} diff --git a/models/qualifier.py b/models/qualifier.py index 34e1198..5ad9dfd 100644 --- a/models/qualifier.py +++ b/models/qualifier.py @@ -16,7 +16,13 @@ class opendons_qualifierCategory(models.Model): name = fields.Char('Name', required=True) order= fields.Integer() description = fields.Text() - + company_id = fields.Many2one( + "res.company", + string="Company", + required=True, + default=lambda self: self.env.company + + ) @api.constrains('name') def _check_name(self): @@ -42,7 +48,13 @@ class opendons_qualifier(models.Model): category_id = fields.Many2one( 'opendons_qualifier.category', string='Category', tracking=True, required=True) - + company_id = fields.Many2one( + "res.company", + string="Company", + required=True, + default=lambda self: self.env.company + + ) @api.model def create(self,vals): diff --git a/models/relationship.py b/models/relationship.py index 74bd649..3f0a2e9 100644 --- a/models/relationship.py +++ b/models/relationship.py @@ -19,7 +19,13 @@ class opendons_relationshipType(models.Model): string='Nature', required=True, track_visibility='onchange') - + company_id = fields.Many2one( + "res.company", + string="Company", + required=True, + default=lambda self: self.env.company + + ) @api.constrains('name') def _check_name(self): @@ -36,7 +42,13 @@ class opendons_relationshipNature(models.Model): type_id = fields.Many2one( 'opendons_relationship.type', string='Type', tracking=True, required=True) - + company_id = fields.Many2one( + "res.company", + string="Company", + required=True, + default=lambda self: self.env.company + + ) @api.constrains('name') def _check_name(self): diff --git a/models/returnmail.py b/models/returnmail.py index edfd4fb..bca1d3e 100644 --- a/models/returnmail.py +++ b/models/returnmail.py @@ -26,6 +26,13 @@ class opendons_returnmail(models.Model): string='NPAI', track_visibility='onchange') #related_npai_partner_id = fields.Many2one(related='returnmailnpai_ids.partner_id') + company_id = fields.Many2one( + "res.company", + string="Company", + required=True, + default=lambda self: self.env.company + + ) def action_ajouter_npai(self): data=self.return_input.split(';') diff --git a/security/security.xml b/security/security.xml new file mode 100644 index 0000000..e545d91 --- /dev/null +++ b/security/security.xml @@ -0,0 +1,54 @@ + + + + Operation Multi-company + + + [('company_id', 'in', company_ids)] + + + + + opendons_payment_batch Multi-company + + + [('company_id', 'in', company_ids)] + + + + opendons_qualifierCategory Multi-company + + + [('company_id', 'in', company_ids)] + + + + opendons_qualifier Multi-company + + + [('company_id', 'in', company_ids)] + + + + + opendons_relationship.type Multi-company + + + [('company_id', 'in', company_ids)] + + + + opendons_relationship.nature Multi-company + + + [('company_id', 'in', company_ids)] + + + + opendons_returnmail Multi-company + + + [('company_id', 'in', company_ids)] + + + \ No newline at end of file diff --git a/views/operation.xml b/views/operation.xml index def9dfa..ec97463 100644 --- a/views/operation.xml +++ b/views/operation.xml @@ -30,6 +30,7 @@ + @@ -261,6 +262,7 @@ Opérations opendons.operation tree,form,pivot,graph + diff --git a/views/partner.xml b/views/partner.xml index 823ad40..bd3cde0 100644 --- a/views/partner.xml +++ b/views/partner.xml @@ -190,8 +190,6 @@ -