Skip to content
Extraits de code Groupes Projets
Valider ccfd9598 rédigé par jordan's avatar jordan
Parcourir les fichiers

[clean] review code

parent 6463cf80
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -121,33 +121,23 @@ class ScopInstance(models.Model): ...@@ -121,33 +121,23 @@ class ScopInstance(models.Model):
return datas_stats_global return datas_stats_global
def _get_partners(self): def _get_partners(self):
"""
map o2m on partner_id
"""
return self.instance_partner_ids.mapped('partner_id') return self.instance_partner_ids.mapped('partner_id')
# ------------------------------------------------------ @api.multi
# Actions def create_report_adhesion(self, partners):
# ------------------------------------------------------
def action_show_coop(self):
""" """
Display tree view of coop linked to instance Generic function to create report adhésion CG
:return: :return:
""" """
self.ensure_one() return self.env.ref('cgscop_adhesion.cgscop_adhesion_report'). \
partner_ids = self._get_partners().ids report_action(partners)
tree_view = self.env.ref(
'cgscop_instance.res_partner_instance_coops_tree').id
return {
'type': 'ir.actions.act_window',
'name': 'Coopératives',
'views': [
[tree_view, "tree"],
[False, "form"]
],
'view_mode': 'tree',
'res_model': 'res.partner',
'target': 'current',
'domain': [["id", "in", partner_ids]],
}
# ------------------------------------------------------
# Actions
# ------------------------------------------------------
def action_add_coop(self): def action_add_coop(self):
""" """
Display wizard to attach coop to instance Display wizard to attach coop to instance
...@@ -194,9 +184,8 @@ class ScopInstance(models.Model): ...@@ -194,9 +184,8 @@ class ScopInstance(models.Model):
Create report adhésion CG PER UR Create report adhésion CG PER UR
:return: :return:
""" """
partners = self.instance_partner_ids.\ partners = self._get_partners().filtered(
filtered(lambda i: i.project_status == '6_suivi').\ lambda i: i.project_status == '6_suivi')
mapped('partner_id')
if len(partners) < 1: if len(partners) < 1:
raise UserError( raise UserError(
'Aucune coopérative n\'est en statut "suivi"') 'Aucune coopérative n\'est en statut "suivi"')
...@@ -216,15 +205,6 @@ class ScopInstance(models.Model): ...@@ -216,15 +205,6 @@ class ScopInstance(models.Model):
'flags': {'mode': 'readonly'} 'flags': {'mode': 'readonly'}
} }
@api.multi
def create_report_adhesion(self, partners):
"""
Generic function to create report adhésion CG
:return:
"""
return self.env.ref('cgscop_adhesion.cgscop_adhesion_report'). \
report_action(partners)
@api.multi @api.multi
def action_send_mail_adhesion(self): def action_send_mail_adhesion(self):
""" """
...@@ -235,10 +215,7 @@ class ScopInstance(models.Model): ...@@ -235,10 +215,7 @@ class ScopInstance(models.Model):
if len(partners) < 1: if len(partners) < 1:
raise UserError( raise UserError(
'Aucune coopérative n\'est en statut "suivi"') 'Aucune coopérative n\'est en statut "suivi"')
wizard = self.env['scop.instance.mail.wizard'].create({ wizard = self.env['scop.instance.mail.wizard'].create({})
'instance_id': self.id,
'partner_ids': [(6, 0, partners.ids)],
})
return { return {
'name': 'Envoyer les mails d\'adhésion', 'name': 'Envoyer les mails d\'adhésion',
...@@ -250,7 +227,32 @@ class ScopInstance(models.Model): ...@@ -250,7 +227,32 @@ class ScopInstance(models.Model):
'domain': [('partner_ids', 'in', partners.ids)], 'domain': [('partner_ids', 'in', partners.ids)],
} }
def show_emails(self): def action_show_coop(self):
"""
Display tree view of coop linked to instance
:return:
"""
self.ensure_one()
partner_ids = self._get_partners().ids
tree_view = self.env.ref(
'cgscop_instance.res_partner_instance_coops_tree').id
return {
'type': 'ir.actions.act_window',
'name': 'Coopératives',
'views': [
[tree_view, "tree"],
[False, "form"]
],
'view_mode': 'tree',
'res_model': 'res.partner',
'target': 'current',
'domain': [["id", "in", partner_ids]],
}
def action_show_emails(self):
"""
Open email related to partners in instance and subtype adhésion
"""
partners = self._get_partners() partners = self._get_partners()
return { return {
'name': 'Etat des mails envoyés', 'name': 'Etat des mails envoyés',
...@@ -270,6 +272,76 @@ class ScopInstance(models.Model): ...@@ -270,6 +272,76 @@ class ScopInstance(models.Model):
# Validation # Validation
# ------------------------------------------------------ # ------------------------------------------------------
@api.multi @api.multi
def scop_valid_cg_mass(self):
"""
Select all coop in state positive and
status "soumis cg" to be validated
+ affect new start_stat if needed
"""
partners_to_validate = self.instance_partner_ids.filtered(
lambda p: p.state == 'positive' and p.project_status == '5_cg')
for r in partners_to_validate:
r.partner_id.with_context(origin_instance_id=self.id). \
scop_valid_cg()
membership_periods = self.env['scop.membership.period'].search(
[('partner_id', '=', r.partner_id.id),
('start', '=', self.date),
('end', '=', False)])
for period in membership_periods:
if period.start_stat != r.statistic_membership_date:
period.update({
'start_stat': r.statistic_membership_date
})
if len(partners_to_validate) > 0:
return self.send_mass_mail_adhesion(
partners_to_validate.mapped('partner_id'))
@api.multi
def send_mass_mail_adhesion(self, partners):
"""
Open wizard to send mail adhésion to partners of instance
"""
self.ensure_one()
template_id = self.env.ref(
'cgscop_adhesion_alfodoo.email_template_adhesion')
ir_model_data = self.env['ir.model.data']
try:
compose_form_id = ir_model_data.get_object_reference(
'mail', 'email_compose_message_wizard_form')[1]
except ValueError:
compose_form_id = False
ctx = {
'default_model': 'res.partner',
'default_res_id': partners.ids[0],
'default_use_template': True,
'default_template_id': template_id.id,
'default_subtype_id': self.env.ref(
'cgscop_adhesion_alfodoo.mail_message_subtype_adhesion').id,
'default_composition_mode': 'mass_mail' if len(
partners.ids) > 1 else 'comment',
'active_ids': partners.ids
}
return {
'type': 'ir.actions.act_window',
'view_type': 'form',
'view_mode': 'form',
'res_model': 'mail.compose.message',
'views': [(compose_form_id, 'form')],
'view_id': compose_form_id,
'target': 'new',
'context': ctx,
}
def update_membership_date(self):
for partner in self.instance_partner_ids:
partner.update({
'statistic_membership_date': self.date_membership
})
# ------------------------------------------------------
# Debug method
# ------------------------------------------------------
@api.multi
def temp_scop_push_invoices(self): def temp_scop_push_invoices(self):
# TODO: Comment or delete function and button after use # TODO: Comment or delete function and button after use
""" """
...@@ -361,69 +433,3 @@ class ScopInstance(models.Model): ...@@ -361,69 +433,3 @@ class ScopInstance(models.Model):
'res_id': wizard.id, 'res_id': wizard.id,
'target': 'new' 'target': 'new'
} }
@api.multi
def scop_valid_cg_mass(self):
"""
Select all coop in state positive and
status "soumis cg" to be validated
affect new start_stat if needed
:return:
"""
partners_to_validate = self.instance_partner_ids. \
filtered(
lambda p: p.state == 'positive' and p.project_status == '5_cg')
for r in partners_to_validate:
r.partner_id.with_context(origin_instance_id=self.id).\
scop_valid_cg()
membership_periods = self.env['scop.membership.period'].search(
[('partner_id', '=', r.partner_id.id),
('start', '=', self.date),
('end', '=', False)])
for period in membership_periods:
if period.start_stat != r.statistic_membership_date:
period.update({
'start_stat': r.statistic_membership_date
})
if len(partners_to_validate) > 0:
return self.send_mass_mail_adhesion(
partners_to_validate.mapped('partner_id'))
@api.multi
def send_mass_mail_adhesion(self, partners):
self.ensure_one()
template_id = self.env.ref(
'cgscop_adhesion_alfodoo.email_template_adhesion')
ir_model_data = self.env['ir.model.data']
try:
compose_form_id = ir_model_data.get_object_reference(
'mail', 'email_compose_message_wizard_form')[1]
except ValueError:
compose_form_id = False
ctx = {
'default_model': 'res.partner',
'default_res_id': partners.ids[0],
'default_use_template': True,
'default_template_id': template_id.id,
'default_subtype_id': self.env.ref(
'cgscop_adhesion_alfodoo.mail_message_subtype_adhesion').id,
'default_composition_mode': 'mass_mail' if len(
partners.ids) > 1 else 'comment',
'active_ids': partners.ids
}
return {
'type': 'ir.actions.act_window',
'view_type': 'form',
'view_mode': 'form',
'res_model': 'mail.compose.message',
'views': [(compose_form_id, 'form')],
'view_id': compose_form_id,
'target': 'new',
'context': ctx,
}
def update_membership_date(self):
for partner in self.instance_partner_ids:
partner.update({
'statistic_membership_date': self.date_membership
})
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
class="oe_stat_button" icon="fa-address-card-o"> class="oe_stat_button" icon="fa-address-card-o">
<field string="Coopératives" name="partners_count" widget="statinfo"/> <field string="Coopératives" name="partners_count" widget="statinfo"/>
</button> </button>
<button name="show_emails" type="object" class="oe_stat_button" icon="fa-envelope-o"> <button name="action_show_emails" type="object" class="oe_stat_button" icon="fa-envelope-o">
<field name="email_count" widget="statinfo" string="Mails"/> <field name="email_count" widget="statinfo" string="Mails"/>
</button> </button>
</div> </div>
......
...@@ -11,6 +11,9 @@ class ScopInstanceMailWizard(models.TransientModel): ...@@ -11,6 +11,9 @@ class ScopInstanceMailWizard(models.TransientModel):
@api.model @api.model
def _get_partner_ids_domain(self): def _get_partner_ids_domain(self):
"""
Compute domain : coops from instance in active_id
"""
res = [('id', 'in', 0)] # Nothing accepted by domain, by default res = [('id', 'in', 0)] # Nothing accepted by domain, by default
if self.env.context.get('active_model') == 'scop.instance': if self.env.context.get('active_model') == 'scop.instance':
instance_id = self.env['scop.instance'].browse( instance_id = self.env['scop.instance'].browse(
...@@ -22,9 +25,6 @@ class ScopInstanceMailWizard(models.TransientModel): ...@@ -22,9 +25,6 @@ class ScopInstanceMailWizard(models.TransientModel):
res = [('id', 'in', partner_ids.ids)] res = [('id', 'in', partner_ids.ids)]
return res return res
instance_id = fields.Many2one(
comodel_name='scop.instance',
string='Instance_id')
partner_ids = fields.Many2many( partner_ids = fields.Many2many(
comodel_name='res.partner', comodel_name='res.partner',
string='Coopératives', string='Coopératives',
...@@ -32,6 +32,9 @@ class ScopInstanceMailWizard(models.TransientModel): ...@@ -32,6 +32,9 @@ class ScopInstanceMailWizard(models.TransientModel):
@api.multi @api.multi
def send_mail(self): def send_mail(self):
"""
Call function to send mail in mass from scop_instance
"""
if self.env.context.get('active_model') == 'scop.instance': if self.env.context.get('active_model') == 'scop.instance':
return self.env['scop.instance'].\ return self.env['scop.instance'].\
browse(self.env.context.get('active_id')).\ browse(self.env.context.get('active_id')).\
......
...@@ -10,15 +10,13 @@ ...@@ -10,15 +10,13 @@
<field name="model">scop.instance.mail.wizard</field> <field name="model">scop.instance.mail.wizard</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form create="false" edit="false"> <form create="false" edit="false">
<group>
<field name="partner_ids" options="{'no_create': True, 'no_open': True}"> <field name="partner_ids" options="{'no_create': True, 'no_open': True}">
<tree> <tree>
<field name="name"/> <field name="name" string="Coopératives"/>
</tree> </tree>
</field> </field>
</group>
<footer> <footer>
<button name="send_mail" string="Valider ces coops" type="object" default_focus="1" class="oe_highlight"/> <button name="send_mail" string="Envoyer à ces coops" type="object" default_focus="1" class="oe_highlight"/>
<button name="cancel" string="Fermer" special="cancel" class="oe_highlight"/> <button name="cancel" string="Fermer" special="cancel" class="oe_highlight"/>
</footer> </footer>
</form> </form>
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter