diff --git a/excel_shipment_checker.py b/excel_shipment_checker.py new file mode 100644 index 0000000..5b5907f --- /dev/null +++ b/excel_shipment_checker.py @@ -0,0 +1,72 @@ +#!/usr/bin/env python3 +""" +Simple checker for Shandex shipments in X3. +Looks for order numbers in X3's Delivery tracking number field. +Shipments sometimes cannot be brought in due to inventory, or they might +be in with a different tracking number. +""" +from tkinter import filedialog +import pprint +import openpyxl +import yamamotoyama + +def main(): + filecleanup() + file = select_file() + data = get_shipment_information(file) + statuses = shipment_check(data[2:]) + write_to_file(statuses) + + +def write_to_file(statuses): + saveto = filedialog.asksaveasfilename(initialfile='report.txt') + with open(saveto, 'w', encoding='utf8') as outfile: + for status in statuses: + outfile.write(status) + outfile.write('\n') + + +def shipment_check(order_list): + reportables = [] + with yamamotoyama.get_connection() as db_connection: + for shandex_order in order_list: + result = db_connection.query( + """ + select + SDHNUM_0, + YLICPLATE_0 + from PROD.SDELIVERY + where YLICPLATE_0 = :order + """, + order=shandex_order, + ).all() + if len(result) == 0: + reportables.append(shandex_order + ' was not found in X3.') + elif len(result) > 1: + reportables.append(shandex_order + ' was found multiple times.') + else: + reportables.append(shandex_order +' was found! ' + result[0]['SDHNUM_0']+ '.') + reportables.append('Orders might not be in X3 due to inventory, or missing information in EDI transmissions. Contact IT.') + return reportables + +def get_shipment_information(file): + seen_orders = [] + wb = openpyxl.load_workbook(file) + ws = wb['Shipped Orders'] + for row in ws.iter_rows(): + if row[1].value not in seen_orders: + seen_orders.append(row[1].value) + return seen_orders + + +def filecleanup(): + return True + + +def select_file(): + filename = filedialog.askopenfilename(title='Choose Excel file from Shandex') + return filename + + +if __name__ == "__main__": + main() \ No newline at end of file