Skip to content
Extraits de code Groupes Projets
scop_period.py 4,08 ko
Newer Older
  • Learn to ignore specific revisions
  • # © 2019 Le Filament (<http://www.le-filament.com>)
    # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
    
    
    from odoo import 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(
    
            comodel_name="res.partner",
            string="Organisme",
            domain=[("is_cooperative", "=", True)],
            ondelete="cascade",
            required=True,
            index=True,
        )
    
        id_riga = fields.Integer("ID RIGA")
    
        start = fields.Date(
            "Début de validité",
            required=True,
            default=fields.Date.today(),
            index=True,
        )
        end = fields.Date("Fin de validité")
    
        end_reason = fields.Selection(
    
            [
                ("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"),
    
                ("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(
    
            string="Cooperative form",
    
        partner_company_type_id = fields.Many2one(
    
            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()
    
        zip_id = fields.Many2one("res.city.zip", "ZIP Location")
    
        city = fields.Char()
        cedex = fields.Char()
    
        state_id = fields.Many2one(
            "res.country.state",
    
            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")
    
        cae = fields.Boolean("CAE")
    
        dissolution_reason_id = fields.Many2one(
    
            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
    
                    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
    
                    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})
    
                    partner_vals.pop("end_reason", False)
    
                    period.partner_id.sudo().write(partner_vals)
    
            return super(ScopPeriod, self).write(vals)