# © 2019 Le Filament (<http://www.le-filament.com>) # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from datetime import datetime, timedelta 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') creation_suborigin_id = fields.Many2one( 'res.partner.creation.suborigin', string="Sous-Origine création en coop", 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') origin_company_type_id = fields.Many2one( comodel_name='res.partner.company.type', string="Forme juridique d'origine", track_visibility='onchange', on_delete='restrict') bank_id = fields.Many2one( 'res.partner', string='Banquier principal', domain=[('is_company', '=', True)], on_delete='restrict') bank2_id = fields.Many2one( 'res.partner', string='Banquier secondaire', domain=[('is_company', '=', True)], 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') is_seed_scop = fields.Boolean("Est une SCOP d'amorçage") seed_end = fields.Date("Date de fin de dispositif", default=str(datetime.today() + timedelta(2556))) auditor_person_id = fields.Many2one( 'res.partner', string='Commissaire aux Comptes (personne)', domain=[('is_company', '=', False)], on_delete='restrict') accountant_person_id = fields.Many2one( 'res.partner', string='Expert-Comptable (personne)', domain=[('is_company', '=', False)], on_delete='restrict') is_incubated = fields.Boolean("Est incubé") incubator_id = fields.Many2one( 'res.partner', string='Incubateur', domain=[('is_company', '=', True)], on_delete='restrict') prescriber_id = fields.Many2one( 'res.partner', string='Prescripteur', domain=[('is_company', '=', True)], on_delete='restrict') # Informations de révision revision_contract = fields.Boolean("Contrat de révision") revision_company_id = fields.Many2one( 'res.partner', string='Organisme de révision', domain=[('is_company', '=', True)], on_delete='restrict') revision_backup_company_id = fields.Many2one( 'res.partner', string='Organisme de révision suppléant', domain=[('is_company', '=', True)], on_delete='restrict') revision_person_id = fields.Many2one( 'res.partner', string='Réviseur agréé', domain=[('is_company', '=', False)], on_delete='restrict') revision_backup_person_id = fields.Many2one( 'res.partner', string='Réviseur assistant', domain=[('is_company', '=', False)], on_delete='restrict') revision_person_assign_date = fields.Date("Date de nomination du réviseur") revision_type = fields.Selection( [('1y', "Annuelle"), ('5y', 'Quinquennale'), ('5ys', "Quinquennale séquencée")], string='Nature de la révision') revision_format_id = fields.Many2one( 'scop.revision.format', string='Format de révision', on_delete='restrict') revision_staff_id = fields.Many2one( 'scop.revision.staff', string='Effectif révision', on_delete='restrict') revision_next_date = fields.Date("Prochain exercice révisable") # 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') 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'établissement 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") subscription_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 ResPartnerCreationSuborigin(models.Model): _name = "res.partner.creation.suborigin" _description = "Creation Sub-Origin" name = fields.Char('Creation Sub-Origin') 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')