Newer
Older
# © 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
class ScopPeriod(models.Model):
_name = "scop.period"
_description = "SCOP Period"
_order = "partner_id, start desc"
# Infos générales
partner_id = fields.Many2one(

Benjamin - Le Filament
a validé
comodel_name="res.partner",
string="Organisme",
domain=[("is_cooperative", "=", True)],
ondelete="cascade",
required=True,
index=True,
)
start = fields.Date(
"Début de validité",
required=True,

Benjamin - Le Filament
a validé
index=True,
)
end = fields.Date("Fin de validité")

Benjamin - Le Filament
a validé
[
("juri", "Modification de la forme juridique"),
("form", "Changement de forme coopérative"),
("acti", "Changement d'activité (NAF)"),
("adr", "Changement d'adresse"),
("nom", "Changement de dénomination sociale"),
("registration", "Immatriculation"),

Benjamin - Le Filament
a validé
("dreets", "Radiation DREETS"),
("deces", "Décès"),
("autr", "Autres"),
],
string="Motif de fin de validité",
)
comments = fields.Text("Commentaires")
name = fields.Char("Raison Sociale", required=True, index=True)
cooperative_form_id = fields.Many2one(

Benjamin - Le Filament
a validé
"res.partner.cooperative.form",

Benjamin - Le Filament
a validé
ondelete="restrict",
)
partner_company_type_id = fields.Many2one(

Benjamin - Le Filament
a validé
comodel_name="res.partner.company.type",
string="Legal Form",
ondelete="restrict",
)
siret = fields.Char(string="SIRET", size=14)
street = fields.Char()
street2 = fields.Char()
street3 = fields.Char()
zip = fields.Char()

Benjamin - Le Filament
a validé
zip_id = fields.Many2one("res.city.zip", "ZIP Location")
city = fields.Char()
cedex = fields.Char()
state_id = fields.Many2one(
"res.country.state",

Benjamin - Le Filament
a validé
string="State",
ondelete="restrict",
domain="[('country_id', '=?', country_id)]",
)
country_id = fields.Many2one("res.country", string="Country", ondelete="restrict")
naf_id = fields.Many2one("res.partner.naf", string="Code NAF", ondelete="restrict")
ur_id = fields.Many2one(comodel_name="union.regionale", string="Union Régionale")
dissolution_reason_id = fields.Many2one(

Benjamin - Le Filament
a validé
"res.partner.dissolution.reason",
string="Motif Décès",

Benjamin - Le Filament
a validé
ondelete="restrict",
)
number = fields.Char(

Benjamin - Le Filament
a validé
string="No adhérent", related="partner_id.member_number", store=False
)
# ------------------------------------------------------
# Override ORM
# ------------------------------------------------------
@api.model_create_multi
def create(self, vals_list):
period_ids = super().create(vals_list)
vals_list_index = 0
for period in period_ids:
if period == period.partner_id.scop_period_ids[0]:
partner_vals = period._get_partner_vals(vals_list[vals_list_index])
# Update partner
period.partner_id.sudo().write(partner_vals)
vals_list_index += 1
return period_ids
def write(self, vals):
for period in self:
if period == period.partner_id.scop_period_ids[0]:
partner_vals = self._get_partner_vals(vals)
period.partner_id.sudo().write(partner_vals)
return super(ScopPeriod, self).write(vals)
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# ------------------------------------------------------
# Business funcitons
# ------------------------------------------------------
def _get_partner_vals(self, vals):
"""
:param dict vals: dictionnaire des valeurs à créer ou à mettre à jour
"""
partner_vals = dict(vals)
# Suppression des valeurs à ne pas remonter à l'organisme
partner_vals.pop("partner_id", False)
partner_vals.pop("start", False)
partner_vals.pop("comments", False)
# Si la date de fin est modifiée et que l'organisme est décédé
# on remonte la date de décès
if "end" in partner_vals:
if (
partner_vals.get("end_reason", False) == "deces"
or self.end_reason == "deces"
):
partner_vals.update(
{"dissolution_date": partner_vals.get("end")}
)
if not partner_vals.get("end"):
partner_vals.update({"dissolution_date": None})
partner_vals.pop("end", False)
partner_vals.pop("end_reason", False)
return partner_vals