Skip to content
Extraits de code Groupes Projets
scop_period.py 4,03 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"),
                ("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)