Skip to content
Extraits de code Groupes Projets
Valider c8b653f1 rédigé par Rémi - Le Filament's avatar Rémi - Le Filament
Parcourir les fichiers

Add adhesion period

parent 3ee89c28
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -22,6 +22,8 @@
"views/assets.xml",
"wizard/scop_period_wizard.xml",
"wizard/scop_deces_wizard.xml",
"wizard/scop_membership_out_wizard.xml",
"wizard/scop_membership_period_wizard.xml",
"views/res_company.xml",
"views/res_users.xml",
"views/res_partner.xml",
......
......@@ -624,7 +624,7 @@ class ScopPartner(models.Model):
and parent.cooperative_form_id.name == "SCIC"):
partner.contact_legality = 'customer'
@api.depends('membership_period_ids')
@api.model
def _compute_membership(self):
for partner in self:
type_cg = self.env['scop.membership.type'].search([
......
......@@ -118,7 +118,9 @@
<form string="Cooperatives" attrs="{'readonly': [('project_status', '=', '5_cg')]}">
<header>
<button string="Nouvelle période" type="action" name="%(cgscop_partner.scop_period_wizard_create_action)d" class="oe_highlight" attrs="{'invisible': ['|', ('write_date', '=', False), ('project_status', '!=', '6_suivi')]}" groups="cgscop_partner.group_add_period"/>
<button string="Nouvelle période d'adhésion" type="action" name="%(cgscop_partner.scop_membership_period_wizard_create_action)d" class="oe_highlight" attrs="{'invisible': ['|', ('write_date', '=', False), ('project_status', '!=', '6_suivi')]}" groups="cgscop_partner.group_add_period"/>
<button string="Décés/Mise en sommeil" type="action" name="%(cgscop_partner.scop_deces_wizard_create_action)d" attrs="{'invisible': ['|', ('dissolution_reason_id', '!=', False), '|', ('write_date', '=', False), ('project_status', '!=', '6_suivi')]}" groups="cgscop_partner.group_add_period"/>
<button string="Radiation" type="action" name="%(cgscop_partner.scop_membership_out_wizard_create_action)d" attrs="{'invisible': ['|', ('write_date', '=', False), ('project_status', '!=', '6_suivi')]}" groups="cgscop_partner.group_add_period"/>
<button string="Envoyer Dossier CG" type="object" name="scop_send_to_cg" class="btn-primary" attrs="{'invisible': ['|', ('write_date', '=', False), ('project_status', '!=', '4_adhesion')]}"/>
<button string="Dossier créé CG (temp)" type="object" name="scop_valid_cg" class="btn-primary" attrs="{'invisible': ['|', ('write_date', '=', False), ('project_status', '!=', '5_cg')]}"/>
<button string="Prospect Abandonne" type="object" name="scop_abandonne" attrs="{'invisible':[('project_status','in',('5_cg', '6_suivi', '7_abandonne'))]}"/>
......
......@@ -3,3 +3,5 @@
from . import scop_period_wizard
from . import scop_deces_wizard
from . import scop_membership_period_wizard
from . import scop_membership_out_wizard
# © 2019 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, fields, models
from odoo.exceptions import ValidationError
class ScopMembershipOutWizard(models.TransientModel):
_name = 'scop.membership.out.wizard'
_description = "Radiation"
# Default functions
@api.model
def _default_partner_id(self):
return self.env.context.get('active_id')
partner_id = fields.Integer('Partner', default=_default_partner_id)
type_id = fields.Many2one(
'scop.membership.type',
string="Type d'adhésion",
ondelete='restrict', required=True)
end = fields.Date(
"Fin d'adhésion", required=True, default=fields.Date.today())
end_reason_id = fields.Many2one(
'scop.membership.reason.end',
string="Motif de fin d’adhésion",
on_delete='restrict',
required=True)
note = fields.Text('Commentaires')
@api.multi
def member_out(self):
# Close previous period
for period in self:
last_period = self.env['scop.membership.period'].search(
[('partner_id', '=', period.partner_id),
('end', '=', False), ('type_id', '=', period.type_id.id)],
limit=1)
if last_period:
if period.end >= last_period.start:
last_period.write({
'end': period.end,
'end_reason_id': period.end_reason_id.id,
'note': period.note,
})
else:
raise ValidationError(
"La date de fin doit être postèrieure à la date de "
+ "début de la dernière période: "
+ str(last_period.start))
else:
raise ValidationError(
"Il n'existe pas de période avec ce type à fermer.")
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<!-- WIZARD FORM -->
<record id="scop_membership_out_wizard_view_form" model="ir.ui.view">
<field name="name">scop.membership.out.wizard.form</field>
<field name="model">scop.membership.out.wizard</field>
<field name="arch" type="xml">
<form string="Radiation">
<group name="period" string="Radiation">
<field name="type_id"/>
<field name="end"/>
<field name="end_reason_id"/>
<field name="note"/>
</group>
<footer>
<button class="btn btn-sm btn-primary" name="member_out" string="Créer" type="object" confirm="Êtes-vous sûr de vouloir clôturer la dernière période ?"/>
<button class="btn btn-sm btn-default" special="cancel" string="Close"/>
</footer>
</form>
</field>
</record>
<record id="scop_membership_out_wizard_create_action" model="ir.actions.act_window">
<field name="name">Radiation</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">scop.membership.out.wizard</field>
<field name="view_mode">form</field>
<field name="view_id" ref="scop_membership_out_wizard_view_form"/>
<field name="target">new</field>
</record>
</odoo>
# © 2019 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, fields, models
from odoo.exceptions import ValidationError
class ScopMembershipPeriodWizard(models.TransientModel):
_name = 'scop.membership.period.wizard'
_description = "Création d'une nouvelle période d'adhésion"
# Default functions
@api.model
def _default_partner_id(self):
return self.env.context.get('active_id')
partner_id = fields.Integer('Partner', default=_default_partner_id)
type_id = fields.Many2one(
'scop.membership.type',
string="Type d'adhésion",
ondelete='restrict', required=True)
start = fields.Date('Début d’adhésion', required=True,
default=fields.Date.today())
number = fields.Char("No adhérent", required=True)
state = fields.Selection(
[("none", "Non Adhérent"),
("ongoing", "Traitement de l'adhésion"),
("approval", "Attente d'approbation"),
("done", "Adhérent")],
string="Statut adhésion", default="none", required=True)
note = fields.Text('Commentaires')
@api.multi
def create_period(self):
for period in self:
# Raise validation error if previous period exists
if self.env['scop.membership.period'].search(
[('partner_id', '=', period.partner_id),
('end', '=', False), ('type_id', '=', period.type_id.id)],
limit=1):
raise ValidationError(
"Une période d'adhésion existe déjà pour ce type")
else:
self.env['scop.membership.period'].create({
'partner_id': period.partner_id,
'type_id': period.type_id.id,
'start': period.start,
'number': period.number,
'state': period.state,
'note': period.note
})
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<!-- WIZARD FORM -->
<record id="scop_membership_period_wizard_view_form" model="ir.ui.view">
<field name="name">scop.membership.period.wizard.form</field>
<field name="model">scop.membership.period.wizard</field>
<field name="arch" type="xml">
<form string="Nouvelle Période d'Adhésion">
<group name="period" string="Période" col="2">
<field name="type_id"/>
<field name="start"/>
<field name="number"/>
<field name="state"/>
<field name="note"/>
</group>
<footer>
<button class="btn btn-sm btn-primary" name="create_period" string="Créer" type="object" confirm="Êtes-vous sûr de vouloir créer une nouvelle période d'adhésion ?"/>
<button class="btn btn-sm btn-default" special="cancel" string="Close"/>
</footer>
</form>
</field>
</record>
<record id="scop_membership_period_wizard_create_action" model="ir.actions.act_window">
<field name="name">Nouvelle période d'adhésion</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">scop.membership.period.wizard</field>
<field name="view_mode">form</field>
<field name="view_id" ref="scop_membership_period_wizard_view_form"/>
<field name="target">new</field>
</record>
</odoo>
......@@ -5,7 +5,7 @@ from odoo import api, fields, models
from odoo.exceptions import ValidationError
class ScopPeiodWizard(models.TransientModel):
class ScopPeriodWizard(models.TransientModel):
_name = 'scop.period.wizard'
_description = "Création d'une nouvelle période"
......
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