Sélectionner une révision Git
ur_month_timesheet.py 2,74 Kio
# © 2019 Le Filament (<http://www.le-filament.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from datetime import date
from dateutil.relativedelta import relativedelta
from odoo import api, fields, models
def get_years():
year_list = []
for i in range(2019, 2030):
year_list.append((str(i), str(i)))
return year_list
MONTHS = [
("1", "Janv"),
("2", "Fév"),
("3", "Mars"),
("4", "Avr"),
("5", "Mai"),
("6", "Juin"),
("7", "Juil"),
("8", "Août"),
("9", "Sept"),
("10", "Oct"),
("11", "Nov"),
("12", "Dec"),
]
class ScopMonthTimesheet(models.Model):
_name = "ur.month.timesheet"
_description = "Heures theoriques mensuelles"
_order = "date_timesheet"
def _default_ur(self):
return self.env["res.company"]._ur_default_get()
year = fields.Selection(
selection=get_years(), string="Année", default=fields.Date.today().year
)
month = fields.Selection(selection=MONTHS, string="Mois")
date_timesheet = fields.Date(
string="Mois format date",
compute="_compute_date_timesheet",
store=True,
)
company_id = fields.Many2one(
comodel_name="res.company",
string="Société",
default=lambda self: self.env.company,
)
ur_id = fields.Many2one(
"union.regionale",
string="Union Régionale",
index=True,
ondelete="restrict",
default=_default_ur,
)
working_time = fields.Integer("Heures théoriques")
_sql_constraints = [
(
"month_year_uniq",
"UNIQUE (year, month, ur_id)",
"Cette date a déjà été renseignée.",
)
]
@api.depends("year", "month")
def _compute_date_timesheet(self):
for month in self:
date_timesheet = date(int(month.year), int(month.month), 1)
month.date_timesheet = date_timesheet
@api.model
def get_month_values(self):
today = date.today()
first_date = today.replace(day=1) - relativedelta(months=6)
last_date = today.replace(day=1) + relativedelta(months=6)
values = self.search(
[
("date_timesheet", ">=", first_date),
("date_timesheet", "<=", last_date),
("ur_id", "=", self.env.company.ur_id.id),
]
)
return {
"month_values": values.mapped(
lambda m: {
"year": m.year,
"month": self._fields["month"].selection[int(m.month) - 1][1],
"working_time": m.working_time,
"date_timesheet": m.date_timesheet,
}
),
"today": today.replace(day=1),
}