def to_purchase_list(): send = SendData() #send.activate_window() if to_main(): time.sleep(0.2) menus = ('Purchase', 'Purchaselist', 'Advanced') traverse(menus) send.send('{ENTER}') time.sleep(.1) screen = parse.process_scene(window.get_window()) if parse.identify_screen(screen, 'Advanced'): send.send('{UP}') send.send('{ENTER}') time.sleep(.1) screen = parse.process_scene(window.get_window()) if parse.identify_screen(screen, '√', 8): send.send('{UP}') send.send(' ') send.send('{ENTER}') else: return False time.sleep(.1) screen = parse.process_scene(window.get_window()) return True # parse.identify_sc
def to_insert_virtual_purchases(date, delay=.5): match = False for i in range(20): send = SendData() send.activate_window() to_menu(('Purchase', 'Default', 'Insert virtual purchases')) send.send('{home}') time.sleep(delay) send.send('{enter}') send.send(date) send.send('{enter}') time.sleep(delay) time.sleep(.8) screen = parse.process_scene(window.get_window()) #input("break") time.sleep(.8) send.activate_window() screen = parse.process_scene(window.get_window()) if parse.identify_screen(screen, 'Insert virtual purchases Flowers'): screen = parse.process_scene(window.get_window()) match = True print(screen[-6]) #input("break") time.sleep(.8) send.activate_window() if 'Article' not in screen[-6]: send = SendData() send.send('{INSERT}') break return match
def run_all_purchase_list_report(from_date, to_date, delay=.8): send = SendData() run_all_purchase_list(from_date, to_date, False) time.sleep(1) screen = parse.process_scene(window.get_window()) o = parse.distribution_list_product(screen) i = 0 while '< More >' in screen[-1] and i < 300: screen = get_next_screen(screen, 0, delay) o.extend(parse.distribution_list_product(screen)) i += 1 send.send('{LEFT}') time.sleep(1) screen = parse.process_scene(window.get_window()) for i in range(20): send.send('{LEFT 10}') time.sleep(.1) screen = parse.process_scene(window.get_window()) if 'Uniware' in screen[1]: ## print("found") break ## index = 0 ## while "From" not in screen or index > 10: ## send.send('{LEFT}') ## screen = parse.process_scene(window.get_window()) ## index+=1 return o
def to_order_order(date='',client='',plist = '03'): send = SendData() if to_main(): time.sleep(0.02) menus = ('order','order') traverse(menus) time.sleep(.5) screen = parse.process_scene(window.get_window()) if client and date: if parse.identify_screen(screen,'Order'): send.send(client) send.send('{HOME}') send.send('{LEFT}') send.send(date) send.send('{F11}') send.send('{ENTER}') send.send('F') send.send('{ENTER}') time.sleep(0.3) screen = parse.process_scene(window.get_window()) if 'Create new order number' in screen[5]: send.send('{HOME}') send.send('{ENTER}') send.send(plist) time.sleep(0.2) else: return False
def to_order(date, ordernumber, go_to_menu=True): send = SendData() if go_to_menu: to_orderstatus(date) else: send.send('{HOME 5}') found = False time.sleep(.5) while not found: index = 0 screen = parse.process_scene(window.get_window())[6:-6] for line in screen: if ordernumber in line: found = True send.send('{DOWN %s}' % index) send.send('{ENTER}') return True index += 1 if not found: send.send('{PGDN}') time.sleep(.5) next_screen = parse.process_scene(window.get_window())[6:-6] if next_screen == screen: return False
def to_order_category(cat_num, cat_name): send = SendData() send.activate_window() send.send(cat_num) for i in range(5): screen = parse.process_scene(window.get_window()) if parse.identify_screen(screen, cat_name, 4): return True time.sleep(.3) screen = parse.process_scene(window.get_window()) return False
def get_purchase_list_report(from_date,to_date,supplier ): send = SendData() run_purchase_list(from_date, to_date,supplier) screen = parse.process_scene(window.get_window()) o = parse.distribution_list_product(screen) i = 0 while '< More >' in screen[-1] and i < 10: send.send('{enter}') time.sleep(0.8) screen = parse.process_scene(window.get_window()) o.extend(parse.distribution_list_product(screen)) i+=1 return o
def to_assortment(): ''' (None)->None goes to Assortment Menu ''' match = False for i in range(2): send = SendData() #to_menu(('Maintenance data','Assor')) # hack to_main() send.send('Maintenance data') send.send('{enter}') time.sleep(0.5) send.send('{DOWN} 4') send.send('{enter}') send.send('{home}') time.sleep(0.5) send.send('{enter}') time.sleep(0.5) screen = parse.process_scene(window.get_window()) if parse.identify_screen(screen, 'Assortment Flowers'): return True return match
def to_purchase(date): ''' (None)->None goes to Assortment Menu ''' match = False wait = .01 for i in range(2): send = SendData() # to_menu(('Maintenance data','Assor')) # hack to_main() send.send('Purchase') send.send('{enter}') time.sleep(wait) send.send('{HOME}') send.send('{enter}') send.send('{home}') time.sleep(wait) send.send('{enter}') time.sleep(wait) send.send('{home}') time.sleep(wait) send.send('{enter}') time.sleep(wait) send.send(date) time.sleep(wait) send.send('{F11}') screen = parse.process_scene(window.get_window()) if parse.identify_screen(screen, 'Purchase/distribute Flowers'): return True return match
def to_pricelist(pricelist_num, date=''): match = False for i in range(2): send = SendData() to_menu_parsed(('Maintenance data', 'Pricelists', 'Edit pricelist')) time.sleep(0.5) send.send('{home}') time.sleep(0.5) send.send('{enter}') time.sleep(0.5) screen = parse.process_scene(window.get_window()) if parse.identify_screen(screen, 'Edit pricelist Flowers'): match = True time.sleep(0.1) if date: send.send('+3') send.send(date) #send.send('{enter}') send.send(pricelist_num) time.sleep(0.1) ## send.send('{enter}') break return match
def get_orders(orders = {}): # change string to list of string, per line screen = None screen = parse.process_scene(get_window()) ''' for i in range(10): try: screen = parse.process_scene(get_window()) except: time.sleep(0.1) if screen: break time.sleep(0.1) ''' # get supplier name supplier = parse.distribution_list_supplier(screen) if not supplier: return None # get list of orders if supplier not in orders: orders[supplier] = [] return orders
def verify(points): time.sleep(1) screen = parse.process_scene(window.get_window()) for p in points: if not p[0] in screen[p[1]][p[2]:]: return False return True
def make_virtual_shipment_list(date = '051115', client='CAN*ON',plist = '03'): send = SendData() navigation.to_order_order(date,client,plist) screen = parse.process_scene(get_window()) categories = parse.order_categories(screen) items = {} for c in categories: if navigation.to_order_category(c[0],c[1]): screen = parse.process_scene(get_window()) ### get items items[c[1]] = parse.parse_virtual_order_category(c[1])[c[1]] ## print(items[c[1]]) send.send("{F12}") return items
def create_order(): w = window.get_window() p = parse.process_scene(w) order_info_row = p[6] client_name = order_info_row[1:7].strip() invoice_num = order_info_row[12:19].strip() order_num = order_info_row[20:27].strip() order_date = dates.f2_to_datetime(order_info_row[35:43]) return {'client_name': client_name,'invoice_num': invoice_num,'order_num': order_num,'order_date': order_date}
def verify_fast(points): time.sleep(.05) screen = parse.process_scene(window.get_window()) for p in points: try: if not p[0] in screen[p[1]][p[2]:]: return False except: verify_fast(points) return True
def get_next_screen(old_screen, depth=0, delay=.5): if depth > 50: return [''] send = SendData() send.send('{enter}') for i in range(200): time.sleep(delay) screen = parse.process_scene(window.get_window()) if old_screen != screen: return screen return get_next_screen(old_screen, depth + 1, delay)
def get_window_info(targets): total = [] w = parse.process_scene(window.get_window()) for target in (targets): i = 0 for line in w: if target in line: total.append((target, i, line.index(target))) i += 1 print(total)
def to_input_purchase(date): match = False for i in range(20): send = SendData() send.activate_window() to_menu(('Purchase', 'Default', 'Input purchases')) send.send('{home}') time.sleep(0.5) send.send('{enter}') send.send(date) send.send('{enter}') time.sleep(0.5) screen = parse.process_scene(window.get_window()) if parse.identify_screen(screen, 'Input purchases Flowers'): screen = parse.process_scene(window.get_window()) match = True if 'Article' not in screen[-6]: send = SendData() send.send('{INSERT}') break return match
def make_shipment_list_NZ(date = '051115', client='CAN*ON',plist = '03'): send = SendData() navigation.to_order_order(date,client,plist) time.sleep(1.5) screen = parse.process_scene(get_window()) categories = parse.order_categories(screen) print(categories) items = {} for c in categories: if navigation.to_order_category(c[0],c[1]): time.sleep(.5) screen = parse.process_scene(get_window()) print(screen) ### get items items[c[1]] = parse.parse_order_category_NZ(c[1])[c[1]] time.sleep(.3) print(items[c[1]]) send.send("{F12}") return items
def to_main(tries = 25): send = SendData() screen = None for ik in range(tries): for j in range(10): try: screen = parse.process_scene(window.get_window()) break except: time.sleep(0.1) time.sleep(0.1) if parse.identify_screen(screen,'Main Menu'): send.send('{UP}') return True send.send('{F12}') return False
def to_virtual_purchase(date, depth=0): send = SendData() if to_main(): time.sleep(0.04) menus = ('Purchase', 'Default', 'Insert virtual purchases') traverse(menus) time.sleep(.5) send.send('{enter}') send.send(date) send.send('{enter}') for i in range(10): screen = parse.process_scene(window.get_window()) if parse.identify_screen(screen, "Insert virtual purchases Flowers", line_num=2): return True time.sleep(.1) if depth < 3: to_virtual_purchase(date, depth=depth + 1)
def to_virtual_stock(from_date, to_date): send = SendData() if to_main(): time.sleep(0.02) menus = ('stock', 'Stock virtual products', 'Edit stock virtual') traverse(menus) send.send(from_date) send.send('{enter}') send.send(to_date) send.send('{f11}') send.send('{enter}') send.send('{down}') send.send('{enter}') for i in range(20): screen = parse.process_scene(window.get_window()) if parse.identify_screen(screen, "Edit stock virtual Flowers", line_num=2): return True time.sleep(.1)
def run_all_purchase_list(from_date, to_date, new=True): if new: navigation.to_purchase_list() window.drag_window() send = SendData() send.send(from_date) send.send('{enter}') send.send(to_date) send.send('{enter}') send.send('{DOWN}') send.send('{F11}') send.send('n') send.send('screen') send.send('{enter}') for i in range(12): ## print("Try " + str(i)) screen = parse.process_scene(window.get_window()) if parse.identify_screen(screen, 'Inkoop advies avc', 1): return window.get_window() time.sleep(0.1)
def run_purchase_list(from_date, to_date,supplier, new = True): if new: navigation.to_purchase_list() drag_window() send = SendData() send.send(from_date) send.send('{enter}') send.send(to_date) send.send('{enter}') send.send('{DOWN}') send.send(supplier) send.send('{enter}') send.send('{F11}') send.send('n') send.send('screen') send.send('{enter}') for i in range(15): screen = parse.process_scene(get_window()) if parse.identify_screen(screen,'Inkoop advies avc',1): return get_window() time.sleep(0.1)
def to_menu_parsed(command_order): ''' (tuple of str)=> bool Navigate main menu to desired window returns True if successful, False if not ''' send = SendData() if to_main(): time.sleep(0.02) col = 1 for c in command_order: row = parse.main_menu_row(col, c) if not row: return False else: ## print("{DOWN %s}" % row) send.send("{DOWN %s}" % row) send.send('{enter}') time.sleep(1) col += 1 screen = parse.process_scene(window.get_window()) return parse.identify_screen(screen, command_order[-1])
def test_navigation_main(self): navigation.to_main() screen = parse.process_scene(window.get_window()) self.assertTrue(parse.identify_screen(screen, 'Main Menu'))
def test_navigation_purchase_list(self): navigation.to_purchase_list() screen = parse.process_scene(window.get_window()) self.assertTrue(parse.identify_screen(screen, 'Advanced'))
from autof2.readf2 import parse from autof2.interface import window total = [] w = parse.process_scene(window.get_window()) for target in ('Q06',): i = 0 for line in w: if target in line: total.append((target, i, line.index(target))) break i += 1 print(total)
def get_order_num(): w = window.get_window() p = parse.process_scene(w) order_info_row = p[6] return order_info_row[20:27].strip()
def create_order_lines(): if 'Debet' in parse.process_scene(window.get_window())[8]: return [] if 'Password' in parse.process_scene(window.get_window())[-3]: return [] cur_window = parse.process_scene(window.get_window()) while 'Everything' not in cur_window[7]: if "Art. info" in cur_window[5]: send.send("{F12}") time.sleep(.05) elif 'Everything' not in cur_window[7]: send.send('+{F11}') send.send('{HOME}') time.sleep(.05) time.sleep(.05) cur_window = parse.process_scene(window.get_window()) send.send("{LEFT 12}") send.send("{RIGHT 10}") # get order _number order_num = get_order_num() ### get total number of rows send.send('{END 5}') # got to end of page time.sleep(.5) screen = parse.process_scene(window.get_window())[8:-4] screen.reverse() for line in screen: if line[1:6].strip(): last_num = int(line[1:6].strip()) break #### start making list send.send('{HOME 5}') # back to top of page time.sleep(.05) items = [] lines_per_page = 23 pages = last_num // lines_per_page if last_num != lines_per_page: pages += 1 for i in range(pages): screen = parse.process_scene(window.get_window())[8:-4] for line in screen: if line[1:6].strip() and "-(C)" not in line: items.append({}) salesperson = line[-8:-1].strip() entry_date = dates.convert_to_datetime(line[-20:-10] + " " + line[-30:-22], '%d-%m-%Y %H:%M:%S') canceled = line[21] == 'a' items[-1]['salesperson'] = salesperson items[-1]['entry_date'] = entry_date items[-1]['canceled'] = canceled items[-1]['status_title'] = line[17:18 + 24].strip() q = line[18 + 25:18 + 25 + 10] q = q.strip().split('x') try: items[-1]['quantity'] = int(q[0]) * int(q[1]) except(ValueError): if line[18 + 25:18 + 25 + 10] == 'Not order.': items[-1]['quantity'] = 0 else: items[-1]['quantity'] = 999 delivered = line[28 + 25:18 + 25 + 10] try: delivered = delivered.strip().split('x') delivered = int(delivered[0]) * int(delivered[1]) except: delivered = 0 items[-1]['delivered'] = delivered price = line[18 + 25 + 10 + 13: 18 + 25 + 10 + 13 + 6].replace(',', '.').strip() items[-1]['price'] = price elif "-(C)" in line: last_num -= 1 send.send('{PGDN}') time.sleep(.5) send.send('{HOME 5}') time.sleep(.5) for i in range(last_num): send.send('+{F10}') send.send('{ENTER}') time.sleep(.3) for j in range(20): assortment_code = parse.process_scene(window.get_window())[9][-13:-1].strip() status_title = parse.process_scene(window.get_window())[6][-35:-1].strip() supplier = parse.process_scene(window.get_window())[11][-30:-23].strip() if "║" not in assortment_code: break else: time.sleep(.1) items[i]['assortment_code'] = assortment_code items[i]['supplier'] = supplier items[i]['order_num'] = order_num send.send('{ENTER}') send.send('{F12}') send.send('{DOWN}') time.sleep(.05) return items