Skip to content
Extraits de code Groupes Projets
Sélectionner une révision Git
  • 2f8c18ca2efb945a0b9b1bc40c228942f557a47f
  • 14.0 par défaut
  • 13.0
  • 12.0 protégée
4 résultats

res_partner.py

Blame
  • 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),
            }