Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • e92e13e73d1b262e38f31cf68f7a4d7e3336ac1d
  • 14.0 par défaut protégée
  • 18.0
  • 17.0
  • 16.0
  • 15.0
6 résultats

res_partner_module_version.py

Blame
  • calendar.py 3,65 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 models, fields, api
    from odoo.exceptions import UserError
    
    
    class CGScopCalendar(models.Model):
        _inherit = 'calendar.event'
    
        @api.model
        def _default_coop_id(self):
            if self.env.context.get('default_res_model') == 'res.partner':
                if self.env.context.get('default_res_id'):
                    return self.env['res.partner'].browse(self.env.context.get('default_res_id'))
            return False
    
        def _default_ur(self):
            return self.env['res.company']._ur_default_get()
    
        type = fields.Selection([
            ('outside', 'Extérieur'),
            ('ur', 'UR'),
            ('absent', 'Absence, Congés, Divers')],
            string="Type de Réunion")
        location = fields.Text()
        coop_id = fields.Many2one(
            comodel_name='res.partner',
            string='Contact',
            domain=[('is_company', '=', 'True')],
            default=_default_coop_id)
        project_id = fields.Many2one(
            comodel_name="project.project",
            string="Code Activité UR",
            domain=[('allow_timesheets', '=', True)])
        cgscop_timesheet_code_id = fields.Many2one(
            related='project_id.cgscop_timesheet_code_id',
            string='Code Activité National',
            store=True)
        ur_financial_system_id = fields.Many2one(
            comodel_name='ur.financial.system',
            string='Dispositif Financier')
        is_transfered = fields.Boolean(
            string="Transféré en feuille de temps",
            default=False)
        ur_id = fields.Many2one(
            'union.regionale',
            string='Union Régionale',
            index=True,
            on_delete='restrict',
            default=_default_ur)
    
        # ------------------------------------------------------
        # onchange
        # ------------------------------------------------------
        @api.onchange('project_id')
        def _onchange_project_id(self):
            if self.project_id.partner_id:
                self.coop_id = self.project_id.partner_id
         
        @api.onchange('coop_id')
        def _onchange_coop_id(self):
            address = ''
            if self.coop_id.street:
                address += self.coop_id.street + '\n'
            if self.coop_id.street2:
                address += self.coop_id.street2 + '\n'
            if self.coop_id.street3:
                address += self.coop_id.street3 + '\n'
            if self.coop_id.zip:
                address += self.coop_id.zip + ' '
            if self.coop_id.city:
                address += self.coop_id.city
            self.location = address
    
        # ------------------------------------------------------
        # Fonction boutons
        # ------------------------------------------------------
        @api.multi
        def create_timesheet(self):
            """ Crée une ligne de temps à partir de l'entrée d'agenda
            """
            for event in self:
                if not event.project_id.analytic_account_id:
                    raise UserError("Le code activité UR doit être \
                                    renseigné sur chaque entrée d'agenda")
                else:
                    self.env['account.analytic.line'].create({
                        'user_id': self.env.user.id,
                        'project_id': event.project_id.id,
                        'account_id': event.project_id.analytic_account_id.id,
                        'ur_financial_system_id': event.ur_financial_system_id.id,
                        'date': event.start,
                        'name': event.name,
                        'company_id': self.env.user.company_id.id,
                        'unit_amount': event.duration if not event.allday else 8.0,
                        'partner_id': event.coop_id.id,
                    })
                    event.is_transfered = True