# -*- coding: utf-8 -*-

from datetime import datetime, date
import time
from odoo import tools
from odoo import models, fields, api, osv

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')

	@api.one
	def _taux_horaire(self):
		self.lf_taux_horaire = self.lf_tarif_jour / 8

	@api.one
	def _total_heures_passees(self):
		res = 0.0
		account = self.analytic_account_id.id		
		##############    Calcul couts annexes   ################
		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   ################
		## 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')],
	    }