Found more code examples from STM. Used claude to generate a summary (CLAUDE.md)
This commit is contained in:
@@ -0,0 +1,258 @@
|
||||
'''
|
||||
Created on May 25th, 2016
|
||||
|
||||
@author: Wes
|
||||
'''
|
||||
import schedule, time, threading, functools, glob, ctypes, sys
|
||||
sys.dont_write_bytecode = True
|
||||
|
||||
from download_transmissions import maharamOrderDownload, maharamInvoiceUpload, maharamASNUpload
|
||||
from download_transmissions import momentumOrderDownload, momentumInvoiceUpload, momentumASNUpload
|
||||
from download_transmissions import kravetOrderDownload
|
||||
from download_transmissions import glenravenASNDownload
|
||||
from download_transmissions import UNIFI_846_Download
|
||||
|
||||
from kf_850 import processKravetPo
|
||||
|
||||
from mg_850 import processMomentumPo
|
||||
from mg_810 import createMomentumInvoiceDocument
|
||||
from mg_856 import createMomentumASN
|
||||
|
||||
from mf_850 import processMaharamPo
|
||||
from mf_810 import createMaharamInvoiceDocuments
|
||||
from mf_856 import createMaharamShipNotices
|
||||
|
||||
from gr_856_in import processInboundGRASN
|
||||
|
||||
from dt_cut import dtxInvoiceAlert
|
||||
|
||||
from FGI_report import run_FGI_report
|
||||
|
||||
#Function decorator to catch exceptions instead of halting scheduler job.
|
||||
def catch_exceptions(job_func):
|
||||
@functools.wraps(job_func)
|
||||
def wrapper(*args, **kwargs):
|
||||
try:
|
||||
job_func(*args, **kwargs)
|
||||
except:
|
||||
import traceback
|
||||
print(traceback.format_exc())
|
||||
update_title()
|
||||
return wrapper
|
||||
|
||||
@catch_exceptions
|
||||
def mf_850():
|
||||
print ('Submitting job: maharamOrderDownload()')
|
||||
maharamOrderDownload()
|
||||
print ''
|
||||
if len(glob.glob('D:\\FTP\\MAH_850_*.txt')) > 0:
|
||||
print 'Processing Maharam POs...'
|
||||
for name in reversed(glob.glob('D:\\FTP\\MAH_850_*.txt')):
|
||||
processMaharamPo(name)
|
||||
print ''
|
||||
update_title()
|
||||
|
||||
@catch_exceptions
|
||||
def mf_810():
|
||||
print 'Submitting job: createMaharamInvoiceDocuments()'
|
||||
createMaharamInvoiceDocuments()
|
||||
print ''
|
||||
if len(glob.glob('D:\\FTP\\SEND_MF\\STM_INVOICE_*.xml')) > 0:
|
||||
print 'Uploading invoice documents to Maharam FTP server...'
|
||||
maharamInvoiceUpload()
|
||||
print ''
|
||||
update_title()
|
||||
|
||||
@catch_exceptions
|
||||
def mf_856():
|
||||
print 'Submitting job: createMaharamShipNotices()'
|
||||
createMaharamShipNotices()
|
||||
print ''
|
||||
if len(glob.glob('D:\\FTP\\SEND_MF\\STM_856_*.txt')) > 0:
|
||||
print 'Uploading shipment notices to Maharam FTP server...'
|
||||
maharamASNUpload()
|
||||
print ''
|
||||
update_title()
|
||||
|
||||
@catch_exceptions
|
||||
def mg_850():
|
||||
print ('Submitting job: momentumOrderDownload()')
|
||||
momentumOrderDownload()
|
||||
print ''
|
||||
if len(glob.glob('D:\\FTP\\SBR_850_*.txt')) > 0:
|
||||
print 'Processing Momentum POs...'
|
||||
for name in reversed(glob.glob('D:\\FTP\\SBR_850_*.txt')):
|
||||
processMomentumPo(name)
|
||||
print ''
|
||||
update_title()
|
||||
|
||||
@catch_exceptions
|
||||
def mg_810():
|
||||
print 'Submitting job: createMomentumInvoiceDocument()'
|
||||
createMomentumInvoiceDocument()
|
||||
print ''
|
||||
if len(glob.glob('D:\\FTP\\SEND_MG\\SBR_810_*.txt')) > 0:
|
||||
print 'Uploading invoice documents to Momentum FTP server...'
|
||||
momentumInvoiceUpload()
|
||||
print ''
|
||||
update_title()
|
||||
|
||||
@catch_exceptions
|
||||
def mg_856():
|
||||
print 'Submitting job: createMomentumASN()'
|
||||
createMomentumASN()
|
||||
print ''
|
||||
if len(glob.glob('D:\\FTP\\SEND_MG\\SBR_856_*.txt')) > 0:
|
||||
print 'Uploading shipment notices to Momentum FTP server...'
|
||||
momentumASNUpload()
|
||||
print ''
|
||||
update_title()
|
||||
|
||||
@catch_exceptions
|
||||
def kf_850():
|
||||
print ('Submitting job: karvetOrderDownload()')
|
||||
kravetOrderDownload()
|
||||
print ''
|
||||
if len(glob.glob('D:\\FTP\\Kravet_to_vendor*.csv')) > 0:
|
||||
print 'Processing Kravet POs...'
|
||||
for name in reversed(glob.glob('D:\\FTP\\Kravet_to_vendor*.csv')):
|
||||
processKravetPo(name)
|
||||
print ''
|
||||
update_title()
|
||||
|
||||
@catch_exceptions
|
||||
def gr_856_in():
|
||||
print ('Submitting job: glenravenASNDownload()')
|
||||
glenravenASNDownload()
|
||||
print ''
|
||||
#Add processing bit here later
|
||||
if len(glob.glob('D:\\FTP\\INCOMING\\GR_ASN_*.csv')) > 0:
|
||||
print 'Processing Glen Raven Ship Notices...'
|
||||
for name in reversed(glob.glob('D:\\FTP\\INCOMING\\GR_ASN_*.csv')):
|
||||
print name
|
||||
#processInboundGRASN(name)
|
||||
update_title()
|
||||
|
||||
@catch_exceptions
|
||||
def un_846_in():
|
||||
print ('Submitting job: UNIFI_846_Download()')
|
||||
UNIFI_846_Download()
|
||||
print ''
|
||||
#Add processing bit here later
|
||||
|
||||
update_title()
|
||||
|
||||
@catch_exceptions
|
||||
def dtx_cut_alert():
|
||||
print ('Submitting job: dtxInvoiceAlert()')
|
||||
dtxInvoiceAlert()
|
||||
print ''
|
||||
update_title()
|
||||
|
||||
@catch_exceptions
|
||||
def FGI_report():
|
||||
print ('Submitting job: run_FGI_report()')
|
||||
run_FGI_report()
|
||||
print ''
|
||||
update_title()
|
||||
|
||||
|
||||
'''
|
||||
Hacked this together to so I can add the name of the next job and when it will run to the
|
||||
console title.
|
||||
'''
|
||||
def update_title():
|
||||
message = 'Scheduler.py - Next Job: ' + min(schedule.jobs).job_func.args.__repr__().split(' ')[1] + ' @ ' + str(schedule.next_run())
|
||||
ctypes.windll.kernel32.SetConsoleTitleA(message)
|
||||
|
||||
|
||||
#Use to run a job in it's own thread
|
||||
def run_threaded(job_func):
|
||||
job_thread = threading.Thread(target=job_func)
|
||||
job_thread.start()
|
||||
|
||||
'''
|
||||
An attempt to clean up the schedule code below.
|
||||
Schedules 'func' to run at 'time' Monday-Friday
|
||||
'''
|
||||
def weekdays(time, func):
|
||||
schedule.every().monday.at(time).do(run_threaded, func)
|
||||
schedule.every().tuesday.at(time).do(run_threaded, func)
|
||||
schedule.every().wednesday.at(time).do(run_threaded, func)
|
||||
schedule.every().thursday.at(time).do(run_threaded, func)
|
||||
schedule.every().friday.at(time).do(run_threaded, func)
|
||||
|
||||
if __name__ == '__main__':
|
||||
#Maharam PO Download
|
||||
mf_850_runs = ['08:25','09:55','11:25','12:55','14:25','15:55','17:25']
|
||||
for t in mf_850_runs:
|
||||
weekdays(t, mf_850)
|
||||
|
||||
#Maharam Invoice Upload. This transmission was sent at 16:40 on the AS400
|
||||
mf_810_runs = ['16:40']
|
||||
for t in mf_810_runs:
|
||||
weekdays(t, mf_810)
|
||||
|
||||
#Maharam ASN Upload
|
||||
mf_856_runs = ['08:45','12:45','13:45','14:45','15:45','16:44','17:45']
|
||||
for t in mf_856_runs:
|
||||
weekdays(t, mf_856)
|
||||
|
||||
#Momentum PO Download
|
||||
mg_850_runs = ['12:25','19:25']
|
||||
for t in mg_850_runs:
|
||||
weekdays(t, mg_850)
|
||||
|
||||
#Momentum Invoice Upload Begin. This transmission was sent at 16:45 on the AS400
|
||||
mg_810_runs = ['16:45']
|
||||
for t in mg_810_runs:
|
||||
weekdays(t, mg_810)
|
||||
|
||||
#Momentum ASN Upload. This transmission was sent at 12:15 on the AS400
|
||||
mg_856_runs = ['12:15','17:30']
|
||||
for t in mg_856_runs:
|
||||
weekdays(t, mg_856)
|
||||
|
||||
#Kravet PO Download
|
||||
kf_850_runs = ['07:25']
|
||||
for t in kf_850_runs:
|
||||
weekdays(t, kf_850)
|
||||
|
||||
#Glen Raven 856 Download
|
||||
gr_856_in_runs = ['08:00', '13:00']
|
||||
for t in gr_856_in_runs:
|
||||
weekdays(t, gr_856_in)
|
||||
|
||||
#UNIFI 846 Download
|
||||
un_846_in_runs = ['08:01', '13:01']
|
||||
for t in un_846_in_runs:
|
||||
weekdays(t, un_846_in)
|
||||
|
||||
'''
|
||||
** DISABLED 2017-10-02 **
|
||||
We have ended the consignment program
|
||||
|
||||
#Designtex Cut into alert
|
||||
dt_cut_runs = ['08:02', '10:00']
|
||||
for t in dt_cut_runs:
|
||||
weekdays(t, dtx_cut_alert)
|
||||
'''
|
||||
|
||||
#FGI Report
|
||||
schedule.every().saturday.at('23:59').do(run_threaded, FGI_report)
|
||||
|
||||
#schedule.every(10).seconds.do(run_threaded, derp) #threaded example
|
||||
#Non-threaded examples
|
||||
#schedule.every(10).minutes.do(job)
|
||||
#schedule.every().hour.do(job)
|
||||
#schedule.every().day.at("10:30").do(job)
|
||||
#schedule.every().monday.do(job)
|
||||
#schedule.every().wednesday.at("13:15").do(job)
|
||||
|
||||
print 'Job started. Do not close this window!'
|
||||
print 'Ctrl-C to exit.'
|
||||
update_title()
|
||||
|
||||
while True:
|
||||
schedule.run_pending()
|
||||
time.sleep(1)
|
||||
Reference in New Issue
Block a user