Sélectionner une révision Git
scop_period_wizard.py
Bifurcation depuis
Le Filament / Confédération Générale des SCOP / cgscop_partner
504 validations de retard le dépôt en amont.

Rémi - Le Filament authored
scop_period_wizard.py 7,24 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 api, fields, models
class ScopPeiodWizard(models.TransientModel):
_name = 'scop.period.wizard'
_description = "Création d'une nouvelle période"
# Default functions
@api.model
def _default_partner_id(self):
return self.env.context.get('active_id')
@api.model
def _default_previous_period_id(self):
return self.env['scop.period'].search(
[('partner_id', '=', self.env.context.get('active_id')),
('end_reason', '=', False)],
limit=1).id
@api.model
def _default_name(self):
return self.env['res.partner'].browse(
self.env.context.get('active_id')).name
@api.model
def _default_cooperative_form_id(self):
return self.env['res.partner'].browse(
self.env.context.get('active_id')).cooperative_form_id
@api.model
def _default_partner_company_type_id(self):
return self.env['res.partner'].browse(
self.env.context.get('active_id')).partner_company_type_id
@api.model
def _default_siret(self):
return self.env['res.partner'].browse(
self.env.context.get('active_id')).siret
@api.model
def _default_street(self):
return self.env['res.partner'].browse(
self.env.context.get('active_id')).street
@api.model
def _default_street2(self):
return self.env['res.partner'].browse(
self.env.context.get('active_id')).street2
@api.model
def _default_street3(self):
return self.env['res.partner'].browse(
self.env.context.get('active_id')).street3
@api.model
def _default_zip(self):
return self.env['res.partner'].browse(
self.env.context.get('active_id')).zip
@api.model
def _default_zip_id(self):
return self.env['res.partner'].browse(
self.env.context.get('active_id')).zip_id
@api.model
def _default_city(self):
return self.env['res.partner'].browse(
self.env.context.get('active_id')).city
@api.model
def _default_cedex(self):
return self.env['res.partner'].browse(
self.env.context.get('active_id')).cedex
@api.model
def _default_state_id(self):
return self.env['res.partner'].browse(
self.env.context.get('active_id')).state_id
@api.model
def _default_country_id(self):
return self.env['res.partner'].browse(
self.env.context.get('active_id')).country_id
@api.model
def _default_naf_id(self):
return self.env['res.partner'].browse(
self.env.context.get('active_id')).naf_id
@api.model
def _default_cae(self):
return self.env['res.partner'].browse(
self.env.context.get('active_id')).cae
# Fields common
partner_id = fields.Integer('Partner', default=_default_partner_id)
# Fields previous period
previous_period_id = fields.Integer(default=_default_previous_period_id)
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"),
('autr', "Autres")],
string='Motif')
comments = fields.Text('Commentaires')
# Fields new period
start = fields.Date('Début de validité', required=True,
default=fields.Date.today())
name = fields.Char('Raison Sociale', required=True, default=_default_name)
cooperative_form_id = fields.Many2one(
'res.partner.cooperative.form',
string="Cooperative form",
on_delete='restrict', required=True,
default=_default_cooperative_form_id)
partner_company_type_id = fields.Many2one(
comodel_name='res.partner.company.type',
string='Legal Form',
track_visibility='onchange',
on_delete='restrict', required=True,
default=_default_partner_company_type_id)
siret = fields.Char(string='SIRET', size=14, required=True,
default=_default_siret)
street = fields.Char(default=_default_street)
street2 = fields.Char(default=_default_street2)
street3 = fields.Char(default=_default_street3)
zip = fields.Char(default=_default_zip)
zip_id = fields.Many2one('res.city.zip', 'ZIP Location',
default=_default_zip_id)
city = fields.Char(default=_default_city)
cedex = fields.Char(default=_default_cedex)
state_id = fields.Many2one(
"res.country.state",
string='State',
ondelete='restrict',
domain="[('country_id', '=?', country_id)]",
default=_default_state_id)
country_id = fields.Many2one(
'res.country', string='Country', ondelete='restrict',
default=_default_country_id)
naf_id = fields.Many2one(
'res.partner.naf',
string='Code NAF',
on_delete='restrict', default=_default_naf_id)
cae = fields.Boolean("CAE", default=_default_cae)
# Action
@api.onchange('zip_id')
def _onchange_zip_id(self):
if self.zip_id:
self.zip = self.zip_id.name
self.city = self.zip_id.city_id.name
self.country_id = self.zip_id.city_id.country_id
self.state_id = self.zip_id.city_id.state_id
@api.multi
def create_period(self):
# Create new period
self.env['scop.period'].create({
'partner_id': self.partner_id,
'start': self.start,
'name': self.name,
'cooperative_form_id': self.cooperative_form_id.id,
'partner_company_type_id': self.partner_company_type_id.id,
'siret': self.siret,
'street': self.street,
'street2': self.street2,
'street3': self.street3,
'zip': self.zip,
'zip_id': self.zip_id.id,
'city': self.city,
'cedex': self.cedex,
'state_id': self.state_id.id,
'country_id': self.country_id.id,
'naf_id': self.naf_id.id,
'cae': self.cae
})
# Close previous period
previous_period = self.env['scop.period'].browse(
self.previous_period_id)
if previous_period:
previous_period.write({
'end': self.start,
'end_reason': self.end_reason,
'comments': self.comments,
})
# Update partner
partner = self.env['res.partner'].browse(self.partner_id)
partner.write({
'name': self.name,
'cooperative_form_id': self.cooperative_form_id.id,
'partner_company_type_id': self.partner_company_type_id.id,
'siret': self.siret,
'street': self.street,
'street2': self.street2,
'street3': self.street3,
'zip': self.zip,
'zip_id': self.zip_id.id,
'city': self.city,
'cedex': self.cedex,
'state_id': self.state_id.id,
'country_id': self.country_id.id,
'naf_id': self.naf_id.id,
'cae': self.cae
})