Sélectionner une révision Git
scop_period.py 3,90 Kio
# © 2019 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import models, fields, api
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(
'res.partner.cooperative.form',
string="Cooperative form",
on_delete='restrict')
partner_company_type_id = fields.Many2one(
comodel_name='res.partner.company.type',
string='Legal Form',
track_visibility='onchange',
on_delete='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',
on_delete='restrict')
cae = fields.Boolean("CAE")
dissolution_reason_id = fields.Many2one(
'res.partner.dissolution.reason',
string="Motif Décès",
on_delete='restrict',
track_visibility='onchange')
number = fields.Char(
string="No adhérent",
related='partner_id.member_number',
store=False)
# ------------------------------------------------------
# Override ORM
# ------------------------------------------------------
@api.multi
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', False)
# Update partner
period.partner_id.write(partner_vals)
return super(ScopPeriod, self).write(vals)