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