Newer
Older
# -*- coding: utf-8 -*-
from datetime import datetime, date
import time
from odoo import tools
from odoo import models, fields, api, osv

Rémi - Le Filament
a validé
class FilamentProjet(models.Model):
_name = 'project.project'
_inherit = 'project.project'
lf_total_budget = fields.Float('Budget Projet',)
lf_heures_budget = fields.Float('Budget Heures', compute='_budget_heures')
lf_tarif_jour = fields.Float('Tarif Jour',)
lf_taux_horaire = fields.Float('Taux Horaire', compute='_taux_horaire')
lf_heures_projet = fields.Float('Allouées (h)', compute='_total_heures')
lf_heures_passees = fields.Float('Heures passées', compute='_total_heures_passees')
lf_heures_restantes = fields.Float('Restant (h)', compute='_total_heures_restantes')
lf_heures_planifiees = fields.Float('Planifiées (h)', compute='_total_heures_planifiees')
lf_couts_annexes = fields.Float('Coûts Annexes', compute='_couts_annexes')
lf_couts_estimes = fields.Float('Coûts Estimes')
lf_commentaire = fields.Text('Commentaires')
account = self.analytic_account_id.id
############## Calcul couts annexes ################

Rémi - Le Filament
a validé
self.env.cr.execute("select sum(unit_amount) from account_analytic_line where account_id=%s;", (account, ) )
heures_passees = self.env.cr.fetchone()[0]
if heures_passees:
self.lf_heures_passees = heures_passees
else:
self.lf_heures_passees = 0.0
@api.one
def _total_heures_planifiees(self):
res = 0.0
for record in self.task_ids:
res = res + record.planned_hours
self.lf_heures_planifiees = res
@api.one
def _couts_annexes(self):
account = self.analytic_account_id.id
############## Calcul couts annexes ################

Rémi - Le Filament
a validé
## self.env.cr.execute("select sum(amount) from account_analytic_line where amount<0 and is_timesheet=FALSE and account_id=%s;", (account, ) )
self.env.cr.execute("select sum(amount) from account_analytic_line where amount<0 and account_id=%s;", (account, ) )
couts_annexes = self.env.cr.fetchone()[0]
if couts_annexes:
self.lf_couts_annexes = couts_annexes * (-1.0)
else:
self.lf_couts_annexes = 0.0
@api.one
@api.depends('lf_total_budget','lf_couts_annexes')
def _budget_heures(self):
self.lf_heures_budget = self.lf_total_budget - self.lf_couts_estimes
@api.one
def _total_heures(self):
if (self.lf_tarif_jour != 0.0):
self.lf_heures_projet = (self.lf_heures_budget / self.lf_tarif_jour) * 8
else:
self.lf_heures_projet = 0.0
@api.one
def _total_heures_restantes(self):
self.lf_heures_restantes = self.lf_heures_projet - self.lf_heures_passees
def open_project(self):
return {
'type': 'ir.actions.act_window',
'name': 'Projet' + self.name,
'view_mode': 'kanban',
'res_model': 'project.project',
'res_id': self.id,
'views': [(False, 'kanban')],
}