Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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
Ejemplo n.º 5
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
Ejemplo n.º 6
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
Ejemplo n.º 7
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
Ejemplo n.º 8
0
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
Ejemplo n.º 9
0
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
Ejemplo n.º 10
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
Ejemplo n.º 11
0
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
Ejemplo n.º 12
0
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
Ejemplo n.º 13
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
Ejemplo n.º 14
0
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}
Ejemplo n.º 15
0
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
Ejemplo n.º 16
0
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)
Ejemplo n.º 17
0
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)
Ejemplo n.º 18
0
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
Ejemplo n.º 19
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
Ejemplo n.º 20
0
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
Ejemplo n.º 21
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)
Ejemplo n.º 22
0
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)
Ejemplo n.º 23
0
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)
Ejemplo n.º 24
0
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)
Ejemplo n.º 25
0
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])
Ejemplo n.º 26
0
 def test_navigation_main(self):
     navigation.to_main()
     screen = parse.process_scene(window.get_window())
     self.assertTrue(parse.identify_screen(screen, 'Main Menu'))
Ejemplo n.º 27
0
 def test_navigation_purchase_list(self):
     navigation.to_purchase_list()
     screen = parse.process_scene(window.get_window())
     self.assertTrue(parse.identify_screen(screen, 'Advanced'))
Ejemplo n.º 28
0
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)
Ejemplo n.º 29
0
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()
Ejemplo n.º 30
0
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