diff --git a/models/operation.py b/models/operation.py
index 7772b46..8a213f1 100644
--- a/models/operation.py
+++ b/models/operation.py
@@ -1,5 +1,5 @@
from odoo import models, fields, api
-from odoo.exceptions import UserError, ValidationError
+from odoo.exceptions import UserError, ValidationError,Warning
from psycopg2 import sql, DatabaseError
from werkzeug import utils
@@ -32,7 +32,7 @@ class opendons_operation(models.Model):
#code=fields.Char(string='Code',required=True, translate=True,track_visibility='always')
name=fields.Char(string='Name',required=True, translate=True,track_visibility='always')
partner_count = fields.Integer(string="count",readonly=True)
- #begin_date=fields.Date(string='Date begin',required=True, translate=True,track_visibility='always')
+ exported_date=fields.Date(string='Exported Date',track_visibility='always')
#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
@@ -99,13 +99,7 @@ class opendons_operation(models.Model):
csv_export = fields.Binary('csv export', filters='.csv', readonly=True)
document_fname=fields.Char()
- # def _compute_segment_count(self):
- # # The current user may not have access rights for donations
- # for operation in self:
- # try:
- # operation.segment_count = len(operation.segment_ids)
- # except Exception:
- # operation.segment_count = 0
+
def validate(self):
for operation in self:
@@ -138,8 +132,10 @@ class opendons_operation(models.Model):
with open(csv_filename, mode='w') as file:
writer = csv.writer(file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
-
- writer.writerow(['id','key','name', 'email','operation','segment'])
+ if self.chanel=='email':
+ writer.writerow(['id','key','name','firstname','email','operation','segment'])
+ if self.chanel=='mail':
+ writer.writerow(['id','key','name','firstname','title','street','street2','city','cp','country_name','operation','segment'])
#sélections des contacts
res=self.select_partner_operation()
@@ -151,13 +147,23 @@ class opendons_operation(models.Model):
if seg.partner_ids:
for p in seg.partner_ids:
#raise UserError(p)
+
id=p.id
key=p.key
name=p.name
- email=p.email
+ firstname=p.firstname if p.firstname else ''
+ street=p.street if p.street else ''
+ street2=p.street2 if p.street2 else ''
+ city=p.city if p.city else ''
+ cp=p.zip if p.zip else ''
+ country_name=p.country_id.name if p.country_id else ''
+ title=p.title.name if p.title else ''
operation=int(self.id)
segment=int(seg.id)
- writer.writerow([id,key,name,email,operation,segment])
+ if self.chanel=='email':
+ writer.writerow([id,key,name,firstname,email,operation,segment])
+ if self.chanel=='mail':
+ writer.writerow([id,key,name,firstname,title,street,street2,city,cp,country_name,operation,segment])
with open(csv_filename, 'r', encoding="utf-8") as f2:
# file encode and store in a variable ‘data’
@@ -166,7 +172,10 @@ class opendons_operation(models.Model):
self.csv_export=base64.encodestring(data)
self.document_fname='operation'+str(self.id)+'.csv'
+ self.exported_date=fields.Date.context_today(self)
os.unlink(csv_filename)
+ #raise Warning('Traitement terminé')
+
return
def select_partner_operation(self):
@@ -185,19 +194,11 @@ class opendons_operation(models.Model):
#[["id","not in",[1,3,7,8,10]]]
#["&",["id","not in",[22]],["id","not in",[1,3,7,8,10]]]
- # partner_excl=self.env['res.partner'].search(eval(segexcl.mailing_domain))
- # raise UserError(str(partner_excl))
- # str_excl="["
- # i=1
- # for p in partner_excl:
- # if i==1: str_excl=str_excl+str(p.id)
- # if i>1 : str_excl=str_excl+','+str(p.id)
- # str_excl=str_excl+']'
- # excl_domain='["id","not in"',+str_excl +']'
+
#List of Domain operators: ! (Not), | (Or), & (And)
#List of Term operators: '=', '!=', '<=', '<', '>', '>=', '=?', '=like', '=ilike', 'like', 'not like', 'ilike', 'not ilike', 'in', 'not in', 'child_of'
- #excl_domain='[("operation_excl_ids","!=","'+self.id+"')]"
+
i=1
for sg in segments:
@@ -245,50 +246,11 @@ class opendons_operation(models.Model):
sg_1=sg
i=i+1
-
+ self.exported_date=fields.Date.context_today(self)
return True
- def select_partner_operation_old(self):
-
- #le principe est de selectionner les contacts associés aux segments avec les règles suivantes :
- #RG1: la priorité des segments est l'ordre de présentation dans la liste des segments
- #RG2: au final, un contact sélectionné est rattaché à l'opération avec le segment d'appartenance
- #RG1: si un contact est présent dans un segment d'exclusion, alors on le retire de la sélection operateur "!""
-
- #suppression des contacts déjà présents pour l'opération
- self.env["opendons.operation_partner"].search([('operation_id','=',self.id)]).unlink()
-
- segments=self.env['opendons.segment'].search(['&',('operation_id','=',self.id),('exclusion','=','False')],order='sequence asc')
- i=1
- for sg in segments:
- if i==1:
- partners=self.env['res.partner'].search(eval(sg.mailing_domain))
- for p in partners:
- vals={}
- vals['operation_id']=self.id
- vals['segment_id']=sg.id
- vals['partner_id']=p.id
-
- res2=self.env['opendons.operation_partner'].create(vals)
-
- if i>1:
- partners=self.env['res.partner'].search(eval(sg.mailing_domain))
- for p in partners:
- pp=self.env["opendons.operation_partner"].search_count(
- ['&',('operation_id','=',int(self.id)),
- ('partner_id','=',int(p.id))])
- if pp==0:
- vals={}
- vals['operation_id']=self.id
- vals['segment_id']=sg.id
- vals['partner_id']=p.id
-
-
- res2=self.env['opendons.operation_partner'].create(vals)
- i=i+1
- return self.env["opendons.operation_partner"].search([('operation_id','=',self.id)])
@api.model
def create(self,vals):
@@ -330,28 +292,6 @@ class opendons_operation(models.Model):
self.document_fname='operation'+seld.id+'.csv'
return
-class opendons_operation_partner(models.Model):
- _name = 'opendons.operation_partner'
- _description = 'opération marketing : lignes des contacts sélectionnés et exportés'
-
- operation_id = fields.Many2one(
- 'opendons.operation',
- String='Operation',
- index=True,
- readonly=True)
-
- segment_id = fields.Many2one(
- 'opendons.segment',
- String='Segemnt',
- index=True,
- readonly=True)
-
- partner_id = fields.Many2one(
- 'res.partner',
- String='Partner',
- index=True,
- readonly=True)
-
class opendons_segment(models.Model):
@@ -368,7 +308,7 @@ class opendons_segment(models.Model):
currency_field='currency_id')
partner_ids = fields.Many2many('res.partner', 'partner_segment_rel', 'partner_id', 'segment_id', string='partners')
partner_count = fields.Integer(string="partners count", compute='_count_partner_segment',readonly=True)
- mailing_domain = fields.Char(string='partners selection', readonly=True)
+ mailing_domain = fields.Char(string='partners selection')
@api.model
def _default_currency(self):
diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv
index 8219c57..4a60ec0 100644
--- a/security/ir.model.access.csv
+++ b/security/ir.model.access.csv
@@ -4,7 +4,7 @@ access_opendons_qualifier_category,opendons_qualifier.category,model_opendons_qu
access_opendons_qualifier_partnerqualifier,opendons_qualifier.partnerqualifier,model_opendons_qualifier_partnerqualifier,donation.group_donation_manager,1,1,1,1
access_opendons_partneraddress,opendons.partneraddress,model_opendons_partneraddress,donation.group_donation_manager,1,1,1,1
access_opendons_operations,opendons.operations,model_opendons_operation,donation.group_donation_manager,1,1,1,1
-access_opendons_operation_partner,opendons.operation_partner,model_opendons_operation_partner,donation.group_donation_manager,1,1,1,1
+
access_opendons_segments,opendons.segments,model_opendons_segment,donation.group_donation_manager,1,1,1,1
access_opendons_ensembles,opendons.ensembles,model_opendons_ensemble,donation.group_donation_manager,1,1,1,1
diff --git a/views/operation.xml b/views/operation.xml
index 6543d0c..2758a52 100644
--- a/views/operation.xml
+++ b/views/operation.xml
@@ -148,9 +148,11 @@
-
+
+ %b-%d-%Y
+
diff --git a/views/partner.xml b/views/partner.xml
index 1215bc1..a4a1733 100644
--- a/views/partner.xml
+++ b/views/partner.xml
@@ -54,6 +54,7 @@
+
@@ -71,8 +72,9 @@
-
-
+
+
+