Skip to content
Snippets Groups Projects
project.py 9.78 KiB
Newer Older
  • Learn to ignore specific revisions
  • Juliana's avatar
    Juliana committed
    # Copyright 2020 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, api
    
    
    class Project(models.Model):
        _inherit = "project.project"
    
        # Champs étape "Demande" => Vue générale
        name_subtitle = fields.Char("Sous-titre")
        first_contact_id = fields.Many2one(
            'res.partner',
            string='1er contact',
            domain=[
                ('active', '=', True), 
                ('is_company', '=', False)],
            on_delete='restrict')
        type_contact = fields.Selection([
            ('pdp', 'Porteur de projet'),
            ('adherent', 'Adhérent'),
            ('no_adherent', 'Non adhérent')],
            string="Type contact")
        date_first_contact = fields.Date(
    
            "Date de 1er contact",
            default=fields.Date.today)
    
    Juliana's avatar
    Juliana committed
        prescripteur_id = fields.Many2one(
            'res.partner',
            string='Prescripteur',
            domain=[
                ('active', '=', True), 
                ('is_company', '=', False)],
            on_delete='restrict')
        prescripteur_company_id = fields.Many2one(
            'res.partner',
            string='Structure prescripteur',
            domain=[
                ('active', '=', True), 
                ('is_company', '=', True)],
            on_delete='restrict')
        porteurs_projets_ids = fields.Many2many(
            comodel_name='res.partner.porteur.project',
            relation='res_partner_porteur_project_rel',
            column1='porteur_id',
            column2='project_id', 
            string="Porteurs de projet")
        description = fields.Text("Description")
        territoire_id = fields.Many2one(
            'res.partner',
            string='Territoire',
            domain=[
                ('active', '=', True), 
                ('is_company', '=', True),
                ('type_structure_id', '!=', False)],
            on_delete='restrict')
    
        cfd_id = fields.Many2one(
            'res.users', 
            string="CFD",
            default=lambda self: self.env.user)
    
    Juliana's avatar
    Juliana committed
    
        # Champs étape "Instruction" => Vue générale
        od_id = fields.Many2one(
            'res.partner',
            string='OD',
            domain=[
                ('active', '=', True), 
                ('is_company', '=', True)],
            on_delete='restrict')
        animateur_id = fields.Many2one(
            'res.partner',
            string='Animateur',
            domain=[
                ('active', '=', True), 
                ('is_company', '=', False)],
            on_delete='restrict')
        type_convention_id = fields.Many2one(
            'adefpat.type.convention', 
            string="Type de convention de financement")
        date_ca = fields.Date("Date de CA pressenti")
        date_start = fields.Date("Date de démarrage prévisionnel")
        # list_photos_ids = fields.One2many('images')
        # documents_ids = fields.One2many('ir.attachment', "Documents")
    
        # Champs étape "Instruction" => Onglet Dossier
        contexte = fields.Text("Contexte projet")
        caract_beneficiaire = fields.Text("Caractéristiques du bénéficiaire")
        historique = fields.Text("Historique & Aujourd’hui")
        besoins_beneficiaires = fields.Text("Besoins des bénéficiaires")
        objectifs_accompagnement = fields.Text("Objectifs d’accompagnement / compétences à acquérir (pour le bénéficiaire)")
        competences_requises = fields.Text("Compétences requises pour le consultant formateur")
        secteurs_requis = fields.Text("Secteurs d’éctivités dont la connaissance est requise pour le consultant formateur")
        modalites_intervention = fields.Text("Modalités d'intervention")
        modalites_facturation = fields.Text("Modalités de facturation")
        modalites_reponse = fields.Text("Modalités de réponse")
    
        # Infos dossier CA
        type_beneficiaire = fields.Selection(
            [],
            string="Type de bénéficiaires")
        objectif_projet = fields.Selection(
            [],
            string="Objectif projet")
        secteur_crit = fields.Selection(
            [],
            string="Secteur d'activité")
        taille = fields.Selection(
            [],
            string="Taille entreprise")
        objectif_formation = fields.Selection(
            [],
            string="Objectif formation")
        type_formation = fields.Selection(
            [],
            string="Type formation")
        encadrement = fields.Selection(
            [],
            string="Encadrement Aides")
        lieu = fields.Text("Lieu")
        periode_realisation = fields.Text("Période de réalisation")
        # duree_totale
        # info_budget
    
        # Champs étape "Instruction" => Onglet Consultation
        consulant_ids = fields.Many2many(
            comodel_name='res.partner.consultants.project',
            relation='res_partner_consultants_project_rel',
            column1='consultant_id',
            column2='project_id', 
            string="Consultants")
    
        # Champs étape "Instruction" => Onglet GAP
        elu_referent_id = fields.Many2one(
            'res.partner',
            string='Élu référent',
            domain=[
                ('active', '=', True), 
                ('is_company', '=', False)],
            on_delete='restrict')
        membre_ids = fields.Many2many(
            comodel_name='res.partner.membres.project',
            relation='res_partner_membres_project_rel',
            column1='membre_id',
            column2='project_id', 
            string="Membres")
        # documents_gap_ids = fields.One2many('ir.attachment', string="Documents GAP")
        modalite_gap = fields.Text("Modalités GAP")
        reunion_ids = fields.One2many('adefpat.reunion.gap', 'project_id', string="Réunions")
        date_gap = fields.Date("Date du GAP")
    
        # Champs étape "Prêt pour CA" => Onglet Général
        num_dossier = fields.Char("Numéro de dossier")
    
    
        @api.multi
        def validate_ca(self):
            for project in self:
                project.num_dossier = datetime.strftime(datetime.today(), '%y') + self.env['ir.sequence'].next_by_code(
                    'increment_num_dossier')
    
    
    Juliana's avatar
    Juliana committed
    
    class AdefpatTypeConvention(models.Model):
        _name = 'adefpat.type.convention'
        _description = 'Liste type de convetion'
    
        name = fields.Char("Convention")
    
    
    class AdefpatReunionGAP(models.Model):
        _name = 'adefpat.reunion.gap'
        _description = 'Réunions GAP'
    
        name = fields.Char("Nom de la réunion")
        # document_ids = fields.One2many('ir.attachment', string="Documents")
        date = fields.Date("Date du GAP")
        project_id = fields.Many2one(
            'project.project',
            string='Projet',
            default=lambda self: self.env.context.get('default_project_id'))
    
    
    class AdefpatMembresProjets(models.Model):
        _name = 'res.partner.membres.project'
        _description = 'Membres'
    
        name = fields.Char("Nom du membre")
        partner_id = fields.Many2one(
            'res.partner',
            string='Membre',
            domain=[
                ('active', '=', True), 
                ('is_company', '=', False)],
            on_delete='restrict')
        lastname = fields.Char(
            related='partner_id.lastname', 
    
    Juliana's avatar
    Juliana committed
        firstname = fields.Char(
            related='partner_id.firstname', 
            string="Prénom",
    
    Juliana's avatar
    Juliana committed
        commune = fields.Char(
            related='partner_id.city', 
            string="Commune",
    
    Juliana's avatar
    Juliana committed
        mobile = fields.Char(
            related='partner_id.mobile', 
            string="Mobile",
    
    Juliana's avatar
    Juliana committed
        fixe = fields.Char(
            related='partner_id.phone', 
            string="Fixe",
    
    Juliana's avatar
    Juliana committed
        email = fields.Char(
            related='partner_id.email', 
            string="Email",
    
    Juliana's avatar
    Juliana committed
    
    
    class AdefpatConsultantsProjets(models.Model):
        _name = 'res.partner.consultants.project'
        _description = 'Consultants'
    
        name = fields.Char("Nom du consultant")
        partner_id = fields.Many2one(
            'res.partner',
            string='Consultant',
            domain=[
                ('active', '=', True), 
                ('is_company', '=', False)],
            on_delete='restrict')
        lastname = fields.Char(
            related='partner_id.lastname', 
    
    Juliana's avatar
    Juliana committed
        firstname = fields.Char(
            related='partner_id.firstname', 
    
    Juliana's avatar
    Juliana committed
        mobile = fields.Char(
            related='partner_id.mobile', 
    
    Juliana's avatar
    Juliana committed
        email = fields.Char(
            related='partner_id.email', 
    
    Juliana's avatar
    Juliana committed
        reference = fields.Selection([
            ('reference', 'Référencé'),
            ('prereference', 'Pré-Référencé'),
            ('dereference', 'Dé-Référencé')],
            related='partner_id.reference',
    
    Juliana's avatar
    Juliana committed
        date_cdc = fields.Date("Date d'envoi du CDC")
    
        cout_journée = fields.Float("Coût journée")
    
    Juliana's avatar
    Juliana committed
        # document_ids = fields.One2many('ir.attachment', string="Documents Consultants")
        date_selection = fields.Date("Date de sélection")
        date_notification = fields.Date("Date de notification")
    
    
    class AdefpatPorteursProjets(models.Model):
        _name = 'res.partner.porteur.project'
        _description = 'Porteurs de projets'
    
        name = fields.Char("Nom du porteurs")
        partner_id = fields.Many2one(
            'res.partner',
            string='Porteur de projet',
            domain=[
                ('active', '=', True), 
                ('is_company', '=', False)],
            on_delete='restrict')
        lastname = fields.Char(
            related='partner_id.lastname', 
    
    Juliana's avatar
    Juliana committed
        firstname = fields.Char(
            related='partner_id.firstname', 
    
    Juliana's avatar
    Juliana committed
        commune = fields.Char(
            related='partner_id.city', 
    
    Juliana's avatar
    Juliana committed
        mobile = fields.Char(
            related='partner_id.mobile', 
    
    Juliana's avatar
    Juliana committed
        fixe = fields.Char(
            related='partner_id.phone', 
    
    Juliana's avatar
    Juliana committed
        email = fields.Char(
            related='partner_id.email', 
    
    Juliana's avatar
    Juliana committed
        statut = fields.Selection(
            [],
            string="Statut")
        eligible = fields.Boolean(
            string="Eligible")