# © 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 class ScopPartner(models.Model): _inherit = "res.partner" def _default_company(self): return self.env['res.company']._company_default_get('res.partner') # Infos générales is_cooperative = fields.Boolean("Est une coopérative") # Informations organisme # A garder ? unique_id_si_ur = fields.Char("Identifiant unique SI UR") unique_id_si_cg = fields.Char("Identifiant unique SI CG") company_id = fields.Many2one( 'res.company', string='Union Régionale', index=True, on_delete='restrict', default=_default_company) siren = fields.Char(string='SIREN', size=9) registration_date = fields.Date( string="Date d'immatriculation RCS") dissolution_date = fields.Date('Date de Décès') dissolution_reason_id = fields.Many2one( 'res.partner.dissolution.reason', string="Motif Décés", on_delete='restrict') organization_type_id = fields.Many2one( 'res.partner.organization.type', string="Type d'organisme", on_delete='restrict') sigle = fields.Char('Sigle') social_object = fields.Char('Objet Social') admin_email = fields.Char('E-mail administratif') # Informations coopératives creation_origin = fields.Selection( [('null', 'Ex-nihilo'), ('transformation', 'Transformation'), ('transmission', 'Transmission'), ('takeover', 'reprise')], string='Origine création en coop') origin_company_type_id = fields.Many2one( comodel_name='res.partner.company.type', string="Forme juridique d'origine", track_visibility='onchange', on_delete='restrict' ) project_status = fields.Selection( [('1_information', "Phase d'information"), ('2_pre-diagnostic', 'Phase de pré-diagnostic'), ('3_accompagnement', "Phase d'accompagnement"), ('4_adhesion', "Phase d'adhésion"), ('5_suivi', 'Phase de suivi'), ('6_abandonne', 'Projet abandonné')], track_visibility='onchange', string='Statut projet') creation_delegate_id = fields.Many2one( 'res.partner', string='Délégué de création', domain=[('user_ids', '>', 0)], on_delete='restrict') followup_delegate_id = fields.Many2one( 'res.partner', string='Délégué de suivi', domain=[('user_ids', '>', 0)], on_delete='restrict') revision_delegate_id = fields.Many2one( 'res.partner', string='Délégué de révision', domain=[('user_ids', '>', 0)], on_delete='restrict') direccte_id = fields.Many2one( 'res.partner', string='DIRECCTE rattachée', domain=[('is_company', '=', True)], on_delete='restrict') date_1st_sign = fields.Date( 'Date 1er signature coop') last_update_status = fields.Date('Dernière mise à jour des statuts') auditor_id = fields.Many2one( 'res.partner', string='Commissaire aux Comptes', domain=[('is_company', '=', True)], on_delete='restrict') accountant_id = fields.Many2one( 'res.partner', string='Expert-Comptable', domain=[('is_company', '=', True)], on_delete='restrict') # Informations fiscales/financières first_closeout = fields.Date( 'Date clôture 1er bilan') closeout_month = fields.Selection( [(1, 'Janvier'), (2, 'Février'), (3, 'Mars'), (4, 'Avril'), (5, 'Mai'), (6, 'Juin'), (7, 'Juillet'), (8, 'Août'), (9, 'Septembre'), (10, 'Octobre'), (11, 'Novembre'), (12, 'Décembre')], string='Mois clôture exercices', default=12) # Infos suivies # Infos organismes cooperative_form_id = fields.Many2one( 'res.partner.cooperative.form', string="Cooperative form", track_visibility='onchange', on_delete='restrict') cae = fields.Boolean("CAE", track_visibility='onchange') is_seed_scop = fields.Boolean("Est une SCOP d'amorçage", track_visibility='onchange') siret = fields.Char(string='SIRET', size=14, track_visibility='onchange') name = fields.Char(index=True, track_visibility='always') street = fields.Char(track_visibility='onchange') street2 = fields.Char(track_visibility='onchange') street3 = fields.Char(track_visibility='onchange') zip_id = fields.Many2one('res.city.zip', 'ZIP Location', track_visibility='onchange') city = fields.Char(track_visibility='onchange') city_id = fields.Many2one('res.city', string='City of Address', track_visibility='onchange') state_id = fields.Many2one( "res.country.state", string='State', ondelete='restrict', domain="[('country_id', '=?', country_id)]", track_visibility='onchange') country_id = fields.Many2one( 'res.country', string='Country', ondelete='restrict', track_visibility='onchange') is_main_location = fields.Boolean("Est l'etablissement principal", track_visibility='onchange') is_subsidiary = fields.Boolean('Est une Filiale', track_visibility='onchange') parent_group_name = fields.Char('Nom du groupe parent', track_visibility='onchange') # Informations juridiques partner_company_type_id = fields.Many2one( comodel_name='res.partner.company.type', string='Legal Form', track_visibility='onchange', on_delete='restrict' ) capital = fields.Integer('Capital social', track_visibility='onchange') ape_id = fields.Many2one( 'res.partner.category', string='APE', help="If the partner is a French company, enter its official " "main activity in this field. The APE is chosen among the " "NAF nomenclature.", track_visibility='onchange', on_delete='restrict' ) certification_ids = fields.Many2many( comodel_name='res.partner.certification', string='Agrement', track_visibility='onchange', on_delete='restrict') industry_id = fields.Many2one('res.partner.industry', 'Industry', track_visibility='onchange', on_delete='restrict') # Autres Informations # Période d'adhésion membership_period_ids = fields.One2many( comodel_name='scop.membership.period', inverse_name='partner_id', string="Périodes d'adhésion") # Cotisation contribution_ids = fields.One2many( comodel_name='scop.contribution', inverse_name='partner_id', string='Cotisations') # Liste Ministère ministry_list_ids = fields.One2many( comodel_name='scop.ministry.list', inverse_name='partner_id', string='Liste Ministère') # Questionnaire questionnaire_ids = fields.One2many( comodel_name='scop.questionnaire', inverse_name='partner_id', string='Questionnaire') # Liasse fiscale liasse_fiscale_ids = fields.One2many( comodel_name='scop.liasse.fiscale', inverse_name='partner_id', string='Liasses Fiscales') # Effectifs staff_ids = fields.One2many( comodel_name='scop.staff', inverse_name='partner_id', string='Effectifs') # Révisions revision_ids = fields.One2many( comodel_name='scop.revision', inverse_name='partner_id', string='Liste des Révisions') # Evènements juridiques legal_event_ids = fields.One2many( comodel_name='scop.legal.event', inverse_name='partner_id', string='Evènements Juridiques') # Outils financiers financial_tools_ids = fields.One2many( comodel_name='scop.financial.tools', inverse_name='partner_id', string='Outils financiers') # Champs pour contacts birthyear = fields.Integer("Année de naissance") education_level = fields.Selection([ ('licence', 'Licence'), ('master', 'Master')], "Niveau d'étude") education_domain = fields.Selection([ ('science', 'Science')], "Domaine d'étude") subscriptions_ids = fields.One2many( comodel_name='res.partner.newsletter.subscription', inverse_name='partner_id', string='Abonnements') contact_origin_id = fields.Many2one( 'res.partner.rgpd.origin', string="Origine du contact", on_delete='restrict') contact_legality = fields.Selection( [("employee", "Salarié"), ("customer", "Client en contrat"), ("supplier", "Fournisseur en contrat"), ("consent", "Consentement"), ("legitimate", "Intérêt légitime"), ("none", "Aucune")], string="Licéité du contact", default="none") class ResPartnerDissolutionReason(models.Model): _name = "res.partner.dissolution.reason" _description = "Dissolution Reason" name = fields.Char('Dissolution Reason') class ResPartnerTypeOrganization(models.Model): _name = "res.partner.organization.type" _description = "Organization Type" name = fields.Char('Organization Type') class ResPartnerCooperativeForm(models.Model): _name = "res.partner.cooperative.form" _description = "Cooperative form" name = fields.Char('Cooperative form') class ResPartneCertification(models.Model): _name = "res.partner.certification" _description = "Certification" name = fields.Char('Certification') class ResPartnerRgpdOrigin(models.Model): _name = "res.partner.rgpd.origin" _description = "Origin" name = fields.Char('Origin')