Пример #1
0
def reserve(reservation):
    driver.switch_to_default_content()
    driver.switch_to_frame(driver.find_element_by_css_selector("frame[src='topnavframe.asp']"))
    driver.find_element_by_css_selector('a[href*="MenuNavFrame.asp?MenuID=4"').click()
    
    driver.switch_to_default_content()
    driver.switch_to_frame(driver.find_element_by_css_selector("frame[src='MenuNavFrame.asp?MenuID=10']"))
    driver.find_element_by_css_selector('a[href*="reservations/addupdatebooking.asp"').click()

    driver.switch_to_default_content()            
    driver.switch_to_frame(driver.find_element_by_css_selector("frame[src='portals/portal.asp']"))
    driver.find_element_by_name("ShipRef").send_keys(reservation[0].BOL)
    
    Select(driver.find_element_by_name("Direction")).select_by_visible_text("Inbound")
    
    Select(driver.find_element_by_name("ConvType")).select_by_visible_text("Truck")
    
    Select(driver.find_element_by_id("RT")).select_by_visible_text("Import")
    
    if steamShipLine.get()=="HAM":
        Select(driver.find_element_by_name("LineID")).select_by_visible_text("Hamburg Sud")
    elif steamShipLine.get()=="MSC":
        Select(driver.find_element_by_name("LineID")).select_by_visible_text("Mediterranean Shipping Co.")
    elif steamShipLine.get()=="CMA":
        Select(driver.find_element_by_name("LineID")).select_by_visible_text("CMA/CGM Can")
    
    Select(driver.find_element_by_name("LEStatus")).select_by_visible_text("Load")
    
    driver.find_element_by_name("Submit").click()
    
    wait = WebDriverWait(driver, 10)
    wait.until(lambda driver: "Reservation Number already exists." in driver.page_source or EC.element_to_be_clickable(driver.find_element_by_name("polcd")))
    
    stopThis = [False]
    
    if "Reservation Number already exists." in driver.page_source:
        stopThis = [True]
        top2 = Toplevel(top)
        L1 = Label(top2, text="Reservation " + reservation[0].BOL + " already exists.")
        L1.grid(row=0, column=0, columnspan=2)
        
        def callbackContinue(stopThis):
            stopThis[0] = False
            top2.destroy() 
        
        def callbackStop():
            top2.destroy()
             
        
        MyButton4 = Button(top2, text="Proceed anyway", width=14, command=lambda: callbackContinue(stopThis))
        MyButton4.grid(row=2, column=0)
        
        MyButton5 = Button(top2, text="Stop", width=10, command=lambda: callbackStop())
        MyButton5.grid(row=2, column=1)
        
        top2.lift()
        top2.attributes('-topmost',True)
        top2.after_idle(top2.attributes,'-topmost',False)
        
        w = 240 # width for the Tk root
        h = 60 # height for the Tk root
        
        # get screen width and height
        ws = top2.winfo_screenwidth() # width of the screen
        hs = top2.winfo_screenheight() # height of the screen
        
        # calculate x and y coordinates for the Tk root window
        x = (ws/2) - (w/2)
        y = (hs/2) - (h/2)
        
        # set the dimensions of the screen 
        # and where it is placed
        top2.geometry('%dx%d+%d+%d' % (w, h, x, y))
        
        
#                     def click2():
#                         click((ws/2) - (w/2) + E1.winfo_rootx()+1, (hs/2) - (h/2)+E1.winfo_rooty()+1)
        top2.wait_visibility(MyButton5)
        moveTo(MyButton5.winfo_rootx()+MyButton5.winfo_width()/2, MyButton5.winfo_rooty()+MyButton5.winfo_height()/2)
        
#                     top2.mainloop()
        
#                     print(container.temp)
        top.wait_window(top2)
        if not stopThis[0]:
            return True
        
        
    if stopThis[0]:
        return False
    
    driver.find_element_by_name("polcd").send_keys("CATOR")
    
    if reservation[0].size=="20R86" or reservation[0].size=="40R96":
        driver.find_element_by_name("ReeferFlg").click()
        
        driver.find_element_by_name("SetTempNbr").send_keys(str(reservation[0].temp))
        
        Select(driver.find_element_by_name("SetTempUnits")).select_by_value("C")
    
    twentyStan = 0
    twentyReef = 0
    twentyOpen = 0
    twentyTank = 0
    fourtyStan = 0
    fourtyOpen = 0
    fourtyOpenHigh = 0
    fourtyReef = 0
    fourtyHigh = 0
    
    for container in reservation:
        if container.size=='20D86':
            twentyStan+=1
        elif container.size=='20O86':
            twentyOpen+=1
        elif container.size=='20R86':
            twentyReef+=1
        elif container.size=='20T86':
            twentyTank+=1
        elif container.size=='40D86':
            fourtyStan+=1
        elif container.size=='40O86':
            fourtyOpen+=1
        elif container.size=='40O96':
            fourtyOpenHigh+=1
        elif container.size=='40D96':
            fourtyHigh+=1
        elif container.size=='40R96':
            fourtyReef+=1
    
    diffTypes = 1
    
    if twentyStan>0:
        driver.find_element_by_name("EqQty" + str(diffTypes)).send_keys(twentyStan)
        driver.find_element_by_name("EqType"+ str(diffTypes)).send_keys("20D86")    
        diffTypes+=1
    if twentyOpen>0:
        driver.find_element_by_name("EqQty" + str(diffTypes)).send_keys(twentyOpen)
        driver.find_element_by_name("EqType"+ str(diffTypes)).send_keys("20O86")    
        diffTypes+=1
    if twentyReef>0:
        driver.find_element_by_name("EqQty" + str(diffTypes)).send_keys(twentyReef)
        driver.find_element_by_name("EqType"+ str(diffTypes)).send_keys("20R86")
        diffTypes+=1
    if twentyTank>0:
        driver.find_element_by_name("EqQty" + str(diffTypes)).send_keys(twentyTank)
        driver.find_element_by_name("EqType"+ str(diffTypes)).send_keys("20T86")
        diffTypes+=1
    if fourtyStan>0:
        driver.find_element_by_name("EqQty" + str(diffTypes)).send_keys(fourtyStan)
        driver.find_element_by_name("EqType"+ str(diffTypes)).send_keys("40D86")
        diffTypes+=1
    if fourtyOpen>0:
        driver.find_element_by_name("EqQty" + str(diffTypes)).send_keys(fourtyOpen)
        driver.find_element_by_name("EqType"+ str(diffTypes)).send_keys("40O86")
        diffTypes+=1
    if fourtyOpenHigh>0:
        driver.find_element_by_name("EqQty" + str(diffTypes)).send_keys(fourtyOpenHigh)
        driver.find_element_by_name("EqType"+ str(diffTypes)).send_keys("40O96")
        diffTypes+=1
    if fourtyHigh>0:
        driver.find_element_by_name("EqQty" + str(diffTypes)).send_keys(fourtyHigh)
        driver.find_element_by_name("EqType"+ str(diffTypes)).send_keys("40D96")
        diffTypes+=1
    if fourtyReef>0:
        driver.find_element_by_name("EqQty" + str(diffTypes)).send_keys(fourtyReef)
        driver.find_element_by_name("EqType"+ str(diffTypes)).send_keys("40R96")
        diffTypes+=1
    if GetAsyncKeyState(27) < 0:
        return False
    driver.find_element_by_name("Submit").click()
    return True