def enter_virtual_purchase(purchase_order_id): id, supplier_code, purchase_date, end_date, visible_from, visible_to, system = get_data.get_virtual_purchase_order( purchase_order_id) purchase_date = dates.get_menu_date(purchase_date) end_date = dates.get_menu_date(end_date) visible_from_date = dates.get_menu_date(visible_from) visible_from_time = dates.get_time(visible_from) visible_to_date = dates.get_menu_date(visible_to) visible_to_hours = dates.get_time(visible_to) traverse.main_menu_purchase_default_insert_virtual_purchase_flowers_date( system, purchase_date) # time.sleep(1) # if '═Lot╦Description════' not in window.get_window(): # keyboard.enter() set_availability_dates(purchase_date, end_date, visible_from_date, visible_from_time, visible_to_date, visible_to_hours) keyboard.command('insert') keyboard.f12() keyboard.command('f10') purchases = get_data.get_virtual_purchases_from_order(id) for purchase in purchases: print(purchase) p_id, code, quantity, packing, fob, landed, order_id, entered = purchase if not entered: enter_purchase_normal(code, str(fob), str(landed), str(quantity), str(packing), supplier_code) update_data.update_purchase_orders_mark_entered(id, True)
def get_lot_info(attempt=0): keyboard.command(('shift', 'f10')) if attempt > 4: return False print(f"attemtpt {attempt}") screen = window.get_window() lot_data = {} for reference in lot_reference: lot_data[reference['data_point']] = find_text_end(screen, reference) if not lot_data['assortment_code']: return get_lot_info(attempt + 1) lot_data['catgeory'] = get_category_name(lot_data['category_num']) print(lot_data['catgeory']) lot_data['name'] = get_article_name(lot_data['catgeory']) try: lot_data['purchase_date'] = dates.lot_date(lot_data['purchase_date']) except: return get_lot_info(attempt + 1) lot_data['landed_price'] = get_landed(lot_data['landed_price']) if not lot_data['landed_price']: lot_data['landed_price'] = '0.01' if check_complete(lot_data): return lot_data return get_lot_info(attempt + 1)
def verify_lot(lot_number): keyboard.command(('shift', 'f10')) text = f'Intern partijnummer : {lot_number}' for i in range(20): if text in window.get_window(): keyboard.f12() return True else: time.sleep(.05) keyboard.f12() return False
def go_to_pricing(): screen = window.get_window() if not screen: time.sleep(.1) screen = window.get_window() if 'Pricegroup:' in screen: keyboard.command('f1') keyboard.write_text('0') keyboard.enter() keyboard.command('f2') keyboard.shift_f11() keyboard.home(3) return lot_verify.pricing_screen()
def enter_purchase_normal(code, fob, landed, quantity, packing, supplier): keyboard.command('f10') keyboard.write_text(code) keyboard.enter() keyboard.write_text(fob) keyboard.enter() keyboard.write_text(landed) keyboard.enter() keyboard.write_text(quantity) keyboard.enter() keyboard.write_text(packing) keyboard.enter() keyboard.write_text(supplier) keyboard.f11(2)
def get_stock_information(system, location, lot, virtual=False): print(virtual) print(f"going to lot: {lot}") print(system, location, lot) if not virtual: go_to = go_to_lot else: go_to = go_to_lot_virtual if go_to(system, location, lot): print(f"at lot: {lot}") keyboard.command(('shift', 'f10')) info = lots.get_lot_info() keyboard.f12() return info return False
def price_lot(system, lot, location, price, virtual=False): # window.drag_window() print(lot) keyboard.command(('shift', 'F10')) if f2_page.verify_lot_info(lot, virtual=virtual): print("on the right lot") keyboard.f12() if change_price_level(system, location, 0): print("price level correct") print('level changed') keyboard.command('f2') pricing.top_of_list() price_str = pricing.make_price_str(price) pricing.price_item(price)
def add_article(): window.drag_window() keyboard.command(('shift', 'F10')) assortment = lots.get_lot_info_assortment() assortment['system'] = 'f2_canada_real' assortment['category_name'] = assortment['catgeory'] assortment['category_code'] = assortment['category_num'] del assortment['purchase_date'] del assortment['lot_number'] del assortment['supplier_code'] del assortment['category_num'] del assortment['landed_price'] del assortment['catgeory'] insert_data.insert_assortment(**assortment) return assortment
def easter_list(virtual_purchase_order_id, system, monday_date, quantity, packing): year = dates.get_pricing_year(monday_date) week = dates.get_pricing_week(monday_date) known_prices = dict() while True: try: assortment = add_article() except: assortment = lots.get_lot_info_assortment() if assortment['name'] == '': print('Blank') print(lots.get_lot_info_assortment()) assortment_code = assortment['assortment_code'] grade = assortment['grade'] fob = input(f"What is the FOB price for {assortment['name']} {grade}") if float(fob) in known_prices: price = known_prices[float(fob)] else: price = input( f"What is the Selling price for {assortment['name']} {grade}") known_prices[float(fob)] = price if not get_data.check_assortment_price(assortment_code, week, year, system): insert_data.insert_weekly_price(system, week, year, assortment_code, price) else: print(price) update_data.update_weekly_price(system, year, week, assortment_code, price) landed = fob time.sleep(.5) window.drag_window() keyboard.f12() keyboard.command('down') insert_data.insert_virtual_purchase(assortment_code, quantity, packing, fob, landed, virtual_purchase_order_id, entered=False) input("next")
def make_list_from_file(system, filename, po_id): variety = '' order_date = get_data.get_virtual_purchase_order(po_id)[2] week = dates.get_week(order_date) year = dates.get_year(order_date) df = import_ecuador_prices(filename) for index, row in df.iterrows(): if not pd.isnull(row['$ fob']): if row['Variety'].strip() != variety: variety = row['Variety'].strip() window.drag_window() keyboard.write_text(variety) print_row_ecuador(row) answer = input("next") if answer == '': try: assortment = add_article() except: assortment = lots.get_lot_info_assortment() keyboard.f12() keyboard.command('down') insert_data.insert_virtual_purchase( assortment_code=assortment['assortment_code'], quantity=15, packing=row['St/bx'], fob="%0.2f" % row['$ fob'], landed="%0.2f" % row['$ fob'], virtual_purchase_order_id=po_id, entered=False) try: insert_data.insert_weekly_price( system, week, year, assortment['assortment_code'], row['selling']) except: update_data.update_weekly_price( system, year, week, assortment['assortment_code'], row['selling']) elif 'q' in answer: break elif 'n' in answer: pass return df
def get_orders(day): str_date = day.strftime('%d/%m/%y') if day >= get_today(): print("\tprocessing day - %s" % day.strftime('%d/%m/%y'), end=" ") try: new_product = purchaselist.run_all_purchase_list_report( str_date, str_date) except: new_product = purchaselist.run_all_purchase_list_report( str_date, str_date) for p in new_product: p.date = str_date print(" lines found = %i" % len(new_product)) keyboard.command('LEFT') return new_product return []
def Rosaprima_mday(): while True: try: assortment = add_article() except: assortment = lots.get_lot_info_assortment() assortment_code = assortment['assortment_code'] grade = assortment['grade'] quantity = 20 packing = 100 if str(grade) == '40': fob = .69 p = 125 elif str(grade) == '50': fob = .82 p = 100 elif str(grade) == '60': fob = .89 p = 100 elif str(grade) == '70': fob = .92 p = 75 elif str(grade) == '80': fob = .92 p = 75 landed = calc_landed(fob, p) virtual_purchase_order_id = 26 keyboard.f12() keyboard.command('down') print(assortment) input("next") time.sleep(.5) window.drag_window() insert_data.insert_virtual_purchase(assortment_code, quantity, packing, fob, landed, virtual_purchase_order_id, entered=False)
def get_lot_info_assortment(attempt=0): keyboard.command(('shift', 'f10')) if attempt > 20: return False #print(f"attemtpt {attempt}") screen = window.get_window() lot_data = {} for reference in lot_reference: try: lot_data[reference['data_point']] = find_text_end( screen, reference) except: pass if not lot_data['assortment_code']: return get_lot_info_assortment(attempt + 1) lot_data['catgeory'] = get_category_name(lot_data['category_num']) lot_data['name'] = get_article_name(lot_data['catgeory']) return lot_data
def get_input_purchase_lots(system, purchase_date): attempts = 0 lots = {} if traverse.main_menu_purchase_default_input_purchases_flowers_date( system, purchase_date): while attempts < 5: try: old_lot_length = len(lots) lots.update( parse.get_input_purchase_lots(system, purchase_date)) new_lot_length = len(lots) if old_lot_length == new_lot_length: attempts += 1 keyboard.command('pagedown') else: attempts = 0 except: attempts += 1 return lots
def main_menu_maintainance_data_pricelists_edit_pricelist_flowers_select( price_list, date, system, attempt=0): menu_str = 'main_menu-maintenance_data-pricelists-edit_pricelist-flowers' f = main_menu_maintainance_data_pricelists_edit_pricelist if traverse_menu(f, menu_str, system, attempt=0): if date: keyboard.command(('shift', '3')) keyboard.write_text(date) keyboard.enter() keyboard.write_text(price_list) price_list_name = VERIFICATION['price_list'][price_list]['name'] window_data = VERIFICATION['screens'][ 'main_menu-maintenance_data-pricelists-edit_pricelist-flowers-select'] window_data[1]['target'] = price_list_name if not f2.verify(window_data, 50): return False else: return True return False
def get_lot_info_purchase(lot_number, purchase_date, supplier_code, attempt=0): keyboard.command(('shift', 'f10')) if attempt > 4: return False screen = window.get_window() lot_data = {} for reference in lot_reference: lot_data[reference['data_point']] = find_text_end(screen, reference) if not lot_data['assortment_code']: return get_lot_info_purchase(purchase_date, lot_number, supplier_code, attempt + 1) lot_data['catgeory'] = get_category_name(lot_data['category_num']) lot_data['name'] = get_article_name(lot_data['catgeory']) lot_data['landed_price'] = get_landed(lot_data['landed_price']) lot_data['purchase_date'] = purchase_date lot_data['supplier_code'] = supplier_code if not lot_data['lot_number']: lot_data['lot_number'] = lot_number if check_complete(lot_data): return lot_data return get_lot_info_purchase(lot_number, purchase_date, supplier_code, attempt + 1)
def get_lot_data(lot, system): lot_number = lot[0] purchase_date = lot[1] window.drag_window() keyboard.command("f7") keyboard.write_text(lot_number) keyboard.enter() for i in range(5): try: lot_main = parse.get_input_purchase_lots(system, purchase_date) break except: lot_main = False time.sleep(.1) if not lot_main or lot_number not in lot_main: return False lot_main = lot_main[lot_number] supplier_code = lot_main['supplier_code'] if not supplier_code or supplier_code[0] in ( 'M', '1') and 'f2_canada' in system: return False data = lots.get_lot_info_purchase(lot_number, purchase_date, supplier_code) keyboard.f12() return data
def go_to_lot(system, location, lot, attempt=0): if f2_page.verify_per_location(location) and f2.verify_system(system): time.sleep(attempt * .05) keyboard.command('F7') keyboard.write_text(lot) keyboard.enter(2) keyboard.command(('shift', 'F10')) found = f2_page.verify_lot_info(lot) keyboard.command('f12') if not found and attempt < 5: found = go_to_lot(system, location, lot, attempt=attempt + 1) return found
def price_stock_location(location): from_date = '00/00/00' to_date = '30/11/45' price_level = 1 price_location_quick(system, from_date, to_date, location, price_level, virtual=True) price_location_quick(system, from_date, to_date, location, price_level, virtual=False) update_recommended_stock_location(system, location) keyboard.command(('alt', 'f2')) keyboard.command('esc') keyboard.command('esc')
def price_system(): from_date = '00/00/00' to_date = '30/11/45' price_level = 1 # price_location_quick(system, from_date, to_date, location, price_level) for location in SHIPMENT_LOCATIONS: print(f"location: {location}") price_location_quick(system, from_date, to_date, location, price_level, virtual=True) price_location_quick(system, from_date, to_date, location, price_level, virtual=False) update_recommended_stock_location(system, location) keyboard.command(('alt', 'f2')) keyboard.command('esc') keyboard.command('esc')
def set_availability_dates(from_date, to_date, cut_off_start_date, cut_off_start_time, cut_off_date, cut_off_time): time.sleep(1) window.drag_window() if not verify((('Available', 22, 54), ('Visible', 25, 56))): time.sleep(1) if not verify((('Available', 22, 54), ('Visible', 25, 56))): print("sent") keyboard.command("INSERT") keyboard.command("F6") for d in (from_date, to_date): keyboard.write_text(d) keyboard.command("enter") keyboard.write_text('0000') keyboard.command("enter") keyboard.write_text(cut_off_start_date) keyboard.command("enter") keyboard.write_text(cut_off_start_time) keyboard.command("enter") keyboard.write_text(cut_off_date) keyboard.command("enter") keyboard.write_text(cut_off_time) keyboard.command("enter") keyboard.command("enter") keyboard.f11()
def go_to_lot(lot_number): window.get_window() keyboard.command('f7') keyboard.write_text(lot_number) keyboard.enter(n=2) return lot_verify.verify_lot(lot_number)
def underline_item(date_str, b): w = window.get_window() if (date_str in w) == b: keyboard.write_text(' ') keyboard.command('down') return w
def change_price_level(system, location, price_level): if f2_page.verify_per_location(location) and f2.verify_system(system): keyboard.command('F1') keyboard.write_text(str(price_level)) keyboard.enter() return f2_page.verify_per_location_price_level(location, price_level)