class Module(): def __init__(self, order_module, number): self.module_id = str(order_module.order_id) + '-' + str(number) self.order_module = order_module self.calendar = Calendar() self.last_step_completed = '' self.steps_left = copy.deepcopy(self.order_module.module_type.steps) self.pointer = (datetime.datetime.now().date(), 0) #(date, intervalle) self.state = 'ready for the next step' self.create_calendar() self.Place_in_calendar() def create_calendar(self): for n in range(100): new_date = datetime.datetime.today() + datetime.timedelta(days=n) day = new_date.day month = new_date.month year = new_date.year self.calendar.add_days_module(day, month, year) def Place_in_calendar(self): #FINDING A SLOT FOR THE MODULE while len(self.steps_left) > 0: step = self.steps_left.pop(0) #Next manufacturing step step_nb_inter = step.step_type.duration_intervalle #Duration (in time slots) step_skill = a.step_type.employee_skill #Skills required step_equipment = a.step_type.equipment_type #Equipment required # print(step_nb_inter, step_skill, step_equipment) module_slot_found = False #True when the manufacturing step is placed in employee and machine calendar while not module_slot_found: #EMPLOYEE SLOT employee_sel = self.place_in_calendar_employee(step, step_nb_inter, step_skill) self.pointer = employee_sel[1] #EQUIPMENT SLOT equipment_sel = self.place_in_calendar_equipment(step, step_nb_inter, step_equipment) if pointer_employee[1] == pointer_equipment[1] or pointer_employee[2] == pointer_equipment[2]: module_slot_found == True self.modify_module_calendar(step, step_nb_inter) self.modify_employee_calendar(step, step_nb_inter, employee_sel[1]) self.modify_equipment_calendar(step, step_nb_inter, equipment_sel[1]) self.pointer[1] += step_nb_inter