метод get_work_days_count для продолжительности отпуска Odoo 11 - PullRequest
0 голосов
/ 11 марта 2019

Я работаю над управлением отпуском для Odoo11.И я застрял в одном месте, где продолжительность отпуска в карантине (4 части), но мое требование, связанное со стоимостью, должно быть указано для отпуска на полдня или на целый день.Например,Продолжительность в (4, 4,25, 4,5,4,75,5) вместо этого мне нужно (4, 4,5,5).Итак, кто-нибудь может помочь мне в этой проблеме?Я обнаружил, что эта проблема связана с приведенным ниже кодом Python odoo.

def _get_number_of_days(self, date_from, date_to, employee_id):
    """ Returns a float equals to the timedelta between two dates given as string."""
    from_dt = fields.Datetime.from_string(date_from)
    to_dt = fields.Datetime.from_string(date_to)
    if employee_id:
        employee = self.env['hr.employee'].browse(employee_id)
        return employee.get_work_days_count(from_dt, to_dt)
    time_delta = to_dt - from_dt
    return math.ceil(time_delta.days + float(time_delta.seconds) / 86400)

@api.onchange('date_from')
def _onchange_date_from(self):
    """ If there are no date set for date_to, automatically set one 8 hours later than
        the date_from. Also update the number_of_days.
    """
    date_from = self.date_from
    date_to = self.date_to
    # No date_to set so far: automatically compute one 8 hours later
    if date_from and not date_to:
        date_to_with_delta = fields.Datetime.from_string(date_from) + timedelta(hours=HOURS_PER_DAY)
        self.date_to = str(date_to_with_delta)
    # Compute and update the number of days
    if (date_to and date_from) and (date_from <= date_to):
        self.number_of_days_temp = self._get_number_of_days(date_from, date_to, self.employee_id.id)
    else:
        self.number_of_days_temp = 0

@api.onchange('date_to')
def _onchange_date_to(self):
    """ Update the number_of_days. """
    date_from = self.date_from
    date_to = self.date_to
    # Compute and update the number of days
    if (date_to and date_from) and (date_from <= date_to):
        self.number_of_days_temp = self._get_number_of_days(date_from, date_to, self.employee_id.id)
    else:
        self.number_of_days_temp = 0

Также прилагаются скриншоты требований PFA enter image description here

enter image description here

Заранее спасибо.

...