Пример #1
0
	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)
Пример #2
0
    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()
Пример #3
0
	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"))
Пример #4
0
	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"))
Пример #5
0
 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())