add time diff between two datetimes

This commit is contained in:
Pawan Kumar 2021-02-18 18:15:13 +05:30
parent c9291b8d53
commit fe33978879
2 changed files with 21 additions and 11 deletions

View File

@ -26,8 +26,8 @@ class AccountAnalyticLine(models.Model):
def _default_end_datetime(self):
return fields.Datetime.to_string(datetime.combine(fields.Datetime.now(), datetime.max.time()))
start_datetime = fields.Datetime("Start Time", required=True, default=_default_start_datetime)
end_datetime = fields.Datetime("End Time", required=True, default=_default_end_datetime)
start_datetime = fields.Datetime("Start Time", required=True)
end_datetime = fields.Datetime("End Time", required=True)
@api.onchange('project_id')
@ -104,17 +104,27 @@ class AccountAnalyticLine(models.Model):
if rec.end_time < rec.start_time:
raise exceptions.ValidationError(_('End time cannot be earlier than Start time'))
@api.onchange('start_time', 'end_time', 'start_datetime', 'end_datetime')
@api.onchange('start_time', 'end_time')
def _onchange_start_end_time(self):
if self.start_time > 0 and self.end_time > 0:
res = self.end_time - self.start_time
if res <= 0:
raise ValidationError(_("End time cannot be earlier than Start time"))
self.unit_amount = res
# if self.start_datetime and self.end_datetime:
# res1 = self.end_datetime - self.start_datetime
# print('ressssssssss', res1)
# self.unit_amount = res1
@api.onchange('start_datetime', 'end_datetime')
def _onchange_start_end_date_time(self):
if self.start_datetime and self.end_datetime:
total_hours = (self.end_datetime - self.start_datetime).total_seconds() / 3600
self.unit_amount = total_hours
# @api.onchange('start_time', 'end_time')
# def _onchange_start_end_time(self):
# if self.start_time > 0:
# dt = datetime.strptime('26 Sep 2012', '%d %b %Y')
# print('HHHHHHHH', dt)
# newdatetime = dt.replace(hour=11, minute=59)
# print('GGGGGGGGGGGGG', newdatetime)
@api.model
def export_data(self, fields):

View File

@ -73,8 +73,8 @@
widget="task_with_hours" context="{'default_project_id': project_id}"
domain="[('project_id', '=', project_id)]"/>
<field name="name" optional="show" required="0"/>
<field name="start_time" widget="float_time" invisible="1"/><!--custom-->
<field name="end_time" widget="float_time" invisible="1"/><!--custom-->
<field name="start_time" widget="float_time" invisible="0"/><!--custom-->
<field name="end_time" widget="float_time" invisible="0"/><!--custom-->
<field name="start_datetime" string="Start Time"/><!--custom-->
<field name="end_datetime" string="End Time"/><!--custom-->
<field name="unit_amount" optional="show" widget="timesheet_uom" sum="Total"
@ -171,8 +171,8 @@
<group>
<!--<field name="amount"/>-->
<field name="amount" invisible="1"/>
<field name="start_time" widget="float_time" invisible="1"/><!--custom-->
<field name="end_time" widget="float_time" invisible="1"/><!--custom-->
<field name="start_time" invisible="0"/><!--custom-->
<field name="end_time" widget="float_time" invisible="0"/><!--custom-->
<field name="start_datetime" string="Start Time"/><!--custom-->
<field name="end_datetime" string="End Time"/><!--custom-->
<field name="unit_amount" widget="timesheet_uom" decoration-danger="unit_amount &gt; 24"/>