Newer
Older
# © 2019 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
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,
)
id_riga = fields.Integer("ID RIGA")

Benjamin - Le Filament
a validé
start = fields.Date(
"Début de validité",
required=True,
default=fields.Date.today(),
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
# ------------------------------------------------------
def write(self, vals):
for period in self:
if period == period.partner_id.scop_period_ids[0]:
partner_vals = dict(vals)
# Suppression des valeurs à ne pas remonter à l'organisme

Benjamin - Le Filament
a validé
partner_vals.pop("partner_id", False)
partner_vals.pop("id_riga", 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

Benjamin - Le Filament
a validé
if "end" in partner_vals:
if (
partner_vals.get("end_reason", False) == "deces"
or period.end_reason == "deces"
):
partner_vals.update(
{"dissolution_date": partner_vals.get("end")}
)
if not partner_vals.get("end"):
partner_vals.update({"dissolution_date": None})

Benjamin - Le Filament
a validé
partner_vals.pop("end", False)
partner_vals.pop("end_reason", False)
period.partner_id.sudo().write(partner_vals)
return super(ScopPeriod, self).write(vals)