Sélectionner une révision Git
Bifurcation depuis
Le Filament / Confédération Générale des SCOP / cgscop_partner
Le projet source a une visibilité limitée.
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