def move_to_next_non_overlapping_slot(self, data): overlapping = self.get_overlap_for("workstation", data, data.workstation) if overlapping: time_sheet = self.get_last_working_slot(overlapping.name, data.workstation) data.from_time = get_datetime(time_sheet.to_time) + get_mins_between_operations() data.to_time = self.get_to_time(data) self.check_workstation_working_day(data)
def move_to_next_non_overlapping_slot(self): """If in overlap, set start as the end point of the overlapping time log""" overlapping = ( self.get_overlap_for("workstation") or self.get_overlap_for("employee") or self.get_overlap_for("user") ) if not overlapping: frappe.throw("Logical error: Must find overlapping") self.from_time = get_datetime(overlapping.to_time) + get_mins_between_operations()
def set_start_end_time_for_workstation(self, data, index): """Set start and end time for given operation. If first operation, set start as `planned_start_date`, else add time diff to end time of earlier operation.""" if index == 0: data.planned_start_time = self.planned_start_date else: data.planned_start_time = get_datetime(self.operations[index-1].planned_end_time)\ + get_mins_between_operations() data.planned_end_time = get_datetime(data.planned_start_time) + relativedelta(minutes = data.time_in_mins) if data.planned_start_time == data.planned_end_time: frappe.throw(_("Capacity Planning Error"))
def set_operation_start_end_time(self, i, d): """Set start and end time for given operation. If first operation, set start as `planned_start_date`, else add time diff to end time of earlier operation.""" if self.planned_start_date: if i==0: # first operation at planned_start date d.planned_start_time = self.planned_start_date else: d.planned_start_time = get_datetime(self.operations[i-1].planned_end_time)\ + get_mins_between_operations() d.planned_end_time = get_datetime(d.planned_start_time) + relativedelta(minutes = d.time_in_mins) if d.planned_start_time == d.planned_end_time: frappe.throw(_("Capacity Planning Error"))
def validate_overlap_for_workstation(self, args, row): # get the last record based on the to time from the job card data = self.get_overlap_for(args, check_next_available_slot=True) if data: row.planned_start_time = get_datetime( data.to_time + get_mins_between_operations())