# -*- coding: utf-8 -*-
# © 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 ScopPartner(models.Model):
    _inherit = "res.partner"

    # Infos générales
    name = fields.Char(index=True, string="Objet social")

    # Informations organisme
    
    # A garder? 
    unique_id_si_ur = fields.Char("Identifiant unique SI UR", required=True)
    unique_id_si_cg = fields.Char("Identifiant unique SI CG", required=True)
    
    ur = fields.Selection([
        ('hdf', 'Hauts de France'),
        ('ge', 'Grand Est'),
        ('idf', 'Ile de France - Centre - Val de Loire - DOM - TOM'),
        ('go', 'Grand Ouest'),
        ('bfc', 'Bourgogne - Franche Comté'),
        ('pc', 'Poitou Charentes'),
        ('lim', 'Limousin'),
        ('arh', 'Auvergne - Rhône Alpes'),
        ('pacac', 'PACA - Corse'),
        ('lr', 'Languedoc Roussillon'),
        ('mp', 'Midi Pyrénées'),
        ('aq', 'Aquitaine')],
        string='Union Régionale',
        default='mp')
    siren = fields.Char(string='SIREN', default='xxx')
    registration_date = fields.Date(
        string="Date d'immatriculation RCS", default="2019-01-01")
    dissolution_date = fields.Date('Date de Décès')
    dissolution_reason = fields.Many2one(
        'dissolution.reason', 
        string="Motif Décés")
    type_organization = fields.Many2one(
        'type.organization', 
        string="Type d'organisme")
    sigle = fields.Char('Sigle')
    logo = fields.Binary('Logo')
    admin_email = fields.Char('eMail administratif')

    # Informations coopératives
    creation_origin = fields.Selection(
        [('nihil', 'Ex-nihilo'),
         ('transformation', 'Transformation'),
         ('transmission', 'Transmission'),
         ('reprise', 'reprise')],
        string='Origine création en coop')
    project_status = fields.Selection([
        ('information', 'Phase dinformation'),
        ('pre-diagnostic', 'Phase de pré-diagnostic'),
        ('accompagnement', 'Phase d accompagnement'),
        ('adhesion', 'Phase d adhésion'),
        ('suivi', 'Phase de suivi'),
        ('abandoonne', 'Projet abandonné')],
        string='Statut projet')
    creation_delegate = fields.Many2one(
        'res.partner',
        string='Délégué de création',
        domain=[('user_ids', '>', 0)])
    followup_delegate = fields.Many2one(
        'res.partner',
        string='Délégué de suivi',
        domain=[('user_ids', '>', 0)])
    revision_delegate = fields.Many2one(
        'res.partner',
        string='Délégué de révision',
        domain=[('user_ids', '>', 0)])
    direccte = fields.Many2one(
        'res.partner',
        string='DIRECCTE rattachée',
        domain=[('is_company', '=', True)])
    date_1st_sign = fields.Date(
        'Date 1er signature coop', default='2019-01-01')
    last_update_status = fields.Date('Dernière mise à jour des statuts')
    coord_cac = fields.Many2one(
        'res.partner',
        string='Coord. CAC',
        domain=[('is_company', '=', True)])
    coord_expert_compt = fields.Many2one(
        'res.partner',
        string='Coord. Expert-Comptable',
        domain=[('is_company', '=', True)])
    
    # Informations fiscales/financières
    first_closeout = fields.Date(
        'Date clôture 1er bilan', default='2019-01-01')
    month_closeout = 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 par période
    partner_infos = fields.One2many(
        comodel_name='partner.info',
        inverse_name='partner_id',
        string='Informations générales variables')

    # Autres Informations
    # Période d'adhésion
    membership_period_ids = fields.One2many(
        comodel_name='membership.period',
        inverse_name='partner_id',
        string='Périodes d adhésion')

    # Cotisation
    contribution_ids = fields.One2many(
        comodel_name='contribution',
        inverse_name='partner_id',
        string='Cotisations')

    # Liste Ministère
    ministry_list_ids = fields.One2many(
        comodel_name='ministry.list',
        inverse_name='partner_id',
        string='Liste Ministère')

    # Questionnaire
    questionnaire_ids = fields.One2many(
        comodel_name='questionnaire',
        inverse_name='partner_id',
        string='Questionnaire')    

    # Liasse fiscale
    liasse_fiscale_ids = fields.One2many(
        comodel_name='liasse.fiscale',
        inverse_name='partner_id',
        string='Liasses fiscales')

    # Effectifs
    effectif_ids = fields.One2many(
        comodel_name='effectif',
        inverse_name='partner_id',
        string='Effectifs')

    # Révisions
    revision_ids = fields.One2many(
        comodel_name='revision',
        inverse_name='partner_id',
        string='Liste des Révisions')    

    # Evènements juridiques
    legal_event_ids = fields.One2many(
        comodel_name='legal.event',
        inverse_name='partner_id',
        string='Evènements juridiques')    

    # Outils financiers
    financial_tools_ids = fields.One2many(
        comodel_name='financial.tools',
        inverse_name='partner_id',
        string='Outils financiers')

    # Contacts
    # contacts_list = fields.One2many(
    #     comodel_name='res.partner', 
    #     string='Liste des contacts') 
    
    # Champs pour contacts
    year_birthday = fields.Integer("Année de naissance")
    level_study = fields.Selection([
        ('licence', 'Licence'),
        ('master', 'Master')],
        "Niveau d'étude")
    field_study = fields.Selection([
        ('science', 'Science')],
        "Domaine d'étude")
    subscription = fields.Many2one(
        'subscription',
        string="Abonnements")
    origin_contact = fields.Many2one(
        'origin',
        string="Origine du contact")
    legality_contact = fields.Char("Licéité du contact")
    

class Subscription(models.Model):
    _name = "subscription"
    _description = "Subscription"

    name = fields.Char('Subscription')


class Origin(models.Model):
    _name = "origin"
    _description = "Origin"

    name = fields.Char('Origin')