Exemple #1
0
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
Exemple #2
0
def parse_price_list_category(cat_name):
    items = []
    send = SendData()
    while True:
        screen = process_scene(window.get_window())
        to_process = screen[6:]
        for line in to_process:
            if '═' in line:
                break
            line = line[4:]
            l = line.split('║')
            if l[0].isspace():
                break
            else:
                if 'x' in line:
                    print(l)
                    quantity = l[7][:l[7].index('x')]
                    price = l[9].replace(',', '.').strip('■').strip('▲').strip('█').strip('▼')
                    print(price)
                    items.append((l[0].strip(), l[1].strip(), l[2].strip(), quantity.strip(), price.strip()))

        send.send('{PGDN}')
        time.sleep(0.1)
        new_screen = process_scene(window.get_window())
        if new_screen == screen:
            time.sleep(0.1)
            new_screen = process_scene(window.get_window())
            if new_screen == screen:
                break
    return {cat_name: items}
Exemple #3
0
def to_input_order(date, client, list=21):
    send = SendData()
    delay = .15
    points = [('Article :', 19, 4), ('n/a', 4, 2), ('Client :', 4, 24)]
    index = 0
    commands = [
        '{LEFT}', date, '{ENTER}', client, '{ENTER}', '{F11}', '{HOME}',
        '{ENTER}', list, '{ENTER}'
    ]
    to_main()
    while not verify(points):
        to_main()
        to_menu(('Orders', 'Input order'))
        for c in commands:
            if c == '{HOME}':
                if verify([('Client information', 6, 4)]):
                    send.send('{F12}')
            if c == list:
                time.sleep(delay)
                if verify([('Create new order number', 5, 21)]):
                    time.sleep(delay)
                    send.send('{HOME}')
                    time.sleep(delay)
                    send.send('{ENTER}')
                    time.sleep(delay)
            time.sleep(delay)
            send.send(c)
            time.sleep(delay)
        if index > 10:
            return False
        index += 1
Exemple #4
0
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
Exemple #5
0
def to_input_purchase_ps_insert(date):
    send = SendData()
    to_menu(('Purchase', 'Per shipment', 'Input purchases (PS)'))
    send.send('{home}')
    time.sleep(0.5)
    send.send('{enter}')
    send.send(date)
    send.send('{enter}')
Exemple #6
0
def to_input_purchase(date):
    send = SendData()
    to_menu(('Purchase','Default','Input purchases'))
    send.send('{home}')
    time.sleep(0.5)
    send.send('{enter}')
    send.send(date)
    send.send('{enter}')
      
Exemple #7
0
def get_window():
    send = SendData()
    drag_window()
    send.send('%c')
    data = None
    for i in range(3):
        data = clipboard.get_clipboard()
        break
    return data
Exemple #8
0
def to_menu_slowest(command_order, verbose=False):
    send = SendData()
    if to_main():
        send.send("{HOME}")
        time.sleep(1)
        if verbose:
            print(command_order)
        traverse(command_order)
        time.sleep(1)
    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)
Exemple #10
0
def to_pricelist_type(list_num):
    ''' (str)->None
    goes to list number in price

    '''
    send = SendData()
    to_menu(('Maintenance data','Pricelists','Pricelist type'))
    send.send('{home}')
    time.sleep(0.5)
    send.send('{enter}')
    send.send(list_num)
    send.send('{f12}')
Exemple #11
0
def parse_sales_by_region():
    send = SendData()
    send.activate_window()
    screen = process_scene(window.get_window())[8:-5]
    totals = {}
    for s in screen:
        row = s.split('║')
        code = row[3].strip()
        total = row[6].strip().replace(',', '.')
        if total:
            totals[code] = total
    return totals
Exemple #12
0
def get_window():
    send = SendData()
    drag_window()
    send.send('%c')
    data = None
    for i in range(3):
        try:
            data = clipboard.get_clipboard()
            break
        except:
            time.sleep(0.01)
    return data
Exemple #13
0
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
Exemple #14
0
def get_window(attempt=0):
    send = SendData()
    drag_window()
    send.send('%c')
    data = None
    for i in range(3):
        try:
            data = get_clipboard()
            break
        except:
            time.sleep(0.01)
    #clipboard.empty_clipboard()
    if data == None and attempt < 10:
        return get_window(attempt + 1)
    return data
Exemple #15
0
def to_menu_slow(command_order):
    send = SendData()
    if to_main():
        time.sleep(0.2)
        print(command_order)
        traverse(command_order)
        time.sleep(0.2)
Exemple #16
0
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
Exemple #17
0
def to_virtual_purchase(date):
    send = SendData()
    if to_main():
        time.sleep(0.04)
        menus = ('Purchase','Default','Insert virtual')
        traverse(menus)
        time.sleep(.5)
        send.send('{enter}')
        send.send(date)
        send.send('{enter}')
Exemple #18
0
def parse_assortment_category_section_dict(cat_name, max_pages=30):
    send = SendData()
    send.send('{home}{home}')
    time.sleep(.01)
    screen = process_scene(window.get_window())
    old_screen = screen
    items = []

    for count in range(max_pages):
        to_process = screen[6:]
        seperated = []
        good_list = []

        for line in to_process:
            seperated.append(line.split('║'))
        for line in seperated:
            if '═' in line[0]:
                break
            if line[1].strip() != '':
                good_list.append(line)
        ##        for line in good_list[2:]:
        ##            send.send('{DOWN}')

        for line in good_list:
            send.send(line[1])
            time.sleep(.15)
            screen = process_scene(window.get_window())
            code = screen[-2][63:82].strip()
            name = line[2][:-4].strip()
            name = name[len(cat_name):].strip()
            colour = line[5].strip()
            length = line[6].strip()
            quality = line[7].strip()
            packing = int(line[8].strip())
            new_item = {'code': code, 'cat_name': cat_name, 'name': name, 'colour': colour, "length": length,
                        "quality": quality, "packing": packing}
            if new_item in items:
                return items

            items.append(new_item)

        ##            print((code,cat_name,name,colour,length,quality,packing))
        send.send('{PGDN}')
        send.send('{home}')
        time.sleep(.4)
        new_screen = process_scene(window.get_window())
        screen = new_screen
        if new_screen[6:] == old_screen[6:]:
            time.sleep(1)
            new_screen = process_scene(window.get_window())
            if new_screen[6:] == old_screen[6:]:
                break
        old_screen = new_screen

    return items
Exemple #19
0
def to_assortment_category(category):
    target = ' ' + category + ' '
    send = SendData()
    to_assortment()
    time.sleep(.5)
    old_screen = window.get_window()
    while category.lower() not in old_screen.lower():
        send.send('{PGDN}')
        time.sleep(0.2)
        if old_screen == window.get_window():
            return None
        old_screen = window.get_window()
    index = old_screen.index(target)
    category_number = old_screen[index - 3: index].strip('║')
    send.send(category_number)
    send.send('{enter}')
    send.send('+{F11}') 
    time.sleep(.5)
    return True
Exemple #20
0
def to_main(tries=25):
    send = SendData()
    screen = None
    for ik in range(tries):
        time.sleep(0.1)
        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('{LEFT 5}')
            send.send('{UP}')
            send.send('{HOME 2}')
            return True
        send.send('{F12}')
    return False
Exemple #21
0
def get_categories():
    send = SendData()
    categories = []
    old_screen = []
    screen = process_scene(window.get_window())[6:-1]
    send.send('{home 5}')
    time.sleep(1)
    screen = process_scene(window.get_window())[6:-1]
    while old_screen != screen:
        old_screen = screen
        for line in screen:
            line = line.split('║')
            if '══' not in line[0]:
                for l in line[2:5]:
                    if l[3:].rstrip() and not l[3:].rstrip().isspace():
                        categories.append((l[3:].rstrip()))
            else:
                for l in line[1:4]:
                    if l[3:].rstrip() and not l[3:].rstrip().isspace():
                        categories.append((l[3:].rstrip()))
            # print(line)
        send.send('{PGDN}')
        time.sleep(1)
        screen = process_scene(window.get_window())[6:-1]
        # a[1].split('║')[2][3:].rstrip()
    categories.sort()
    return categories
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
Exemple #23
0
def parse_virtual_order_category(cat_name):
    items = []
    send = SendData()
    time.sleep(0.2)
    while True:
        time.sleep(0.1)
        screen = process_scene(helper.get_window())
        to_process = screen[6:]
        for line in to_process:
            if '═' in line:
                break
            line = line[4:]
            l = line.split('║')

            if l[0].isspace():
                print(cat_name, l)
                break
            else:
                quantity = l[7][:l[7].index('x')]
                packing = l[7][l[7].index('x') + 1:].strip()
                ##                print(packing)
                price = l[9].replace(
                    ',', '.').strip('■').strip('▲').strip('█').strip('▼')
                ##                print(price)
                items.append((l[0].strip(), l[1].strip(), l[2].strip(),
                              quantity.strip(), price.strip(), packing))

        time.sleep(0.2)
        send.send('{PGDN}')
        time.sleep(0.2)
        print("next")
        new_screen = process_scene(helper.get_window())
        if new_screen == screen:
            time.sleep(0.5)
            new_screen = process_scene(helper.get_window())
            if new_screen == screen:
                break

    return {cat_name: items}
Exemple #24
0
def traverse(menu_list):
    send = SendData()
    index = 0
    time.sleep(.2)
    for m in menu_list:
        send.send('{Home}')
        num = parse.menu_nav_columns(index, m)
        if num:
            cmd = "{DOWN " + num + "}"
            send.send(cmd)
            send.send("{ENTER}")
            time.sleep(.5)

        index += 1
    time.sleep(.2)
Exemple #25
0
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
Exemple #26
0
def parse_input_purchase(screen):
    send = SendData()
    screen = screen[6:]
    new_screen = None
    items = {}
    while True:

        for line in screen:
            if '══' in line:
                break
            line = line.split('║')
            ##        print(line)
            lot = line[1].strip()
            price = line[6].strip().replace(',', '.')
            items[lot] = price

        send.send('{PGDN}')
        time.sleep(0.5)
        new_screen = process_scene(window.get_window())[6:]
        if screen == new_screen:
            break
        screen = new_screen
    return items
Exemple #27
0
def to_assortment():
    ''' (None)->None
    goes to Assortment Menu 
    '''
    send = SendData()
    to_menu(('Maintenance data','Assortment'))
    send.send('{home}')
    time.sleep(0.5)
    send.send('{enter}')
Exemple #28
0
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
Exemple #29
0
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)
Exemple #30
0
def to_orderstatus_range(date):
    if to_main():

        send = SendData()
        index = 0
        while not to_menu_slowest(['Sales', 'Orderstatus sales (f/t)']):
            time.sleep(.3)
            index += 1
            if index > 3:
                exit()
        send.send(date)
        send.send('{ENTER}')