added simple shipment checker
parent
5c4b689a16
commit
5e9de92626
|
@ -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()
|
Loading…
Reference in New Issue