Rev 5944 | Blame | Compare with Previous | Last modification | View Log | RSS feed
#!/usr/bin/python'''It processes the Hotspot procurement Report containing the response of the procurementreport sent to hotspot. It reads the response and populates the database.@author: Rajveer'''import timeimport datetimeimport optparseimport sysimport xlrdimport tracebackif __name__ == '__main__' and __package__ is None:import ossys.path.insert(0, os.getcwd())from shop2020.clients.LogisticsClient import LogisticsClientfrom shop2020.clients.TransactionClient import TransactionClientfrom shop2020.thriftpy.model.v1.order.ttypes import TransactionServiceExceptionfrom shop2020.utils.EmailAttachmentDownloader import download_attachmentfrom shop2020.utils.EmailAttachmentSender import get_attachment_part, mailfrom shop2020.utils.Utils import to_py_datefrom_user = 'cnc.center@shop2020.in'from_pwd = '5h0p2o2o'to = ['cnc.center@shop2020.in', "amit.sirohi@shop2020.in", "sandeep.sachdeva@shop2020.in", "parmod.kumar@shop2020.in"]def process_procurement_report(vendor):try:#filename = "./hotspot-procurement-report-2012-1-10.xls"filename = fetch_report('UPDATED')print "Reading procurement report from:" + filenameworkbook = xlrd.open_workbook(filename)sheet = workbook.sheet_by_index(0)num_rows = sheet.nrowstxnClient = TransactionClient().get_client()for rownum in range(1, num_rows):item_id = sheet.row_values(rownum)[0]po_raised = sheet.row_values(rownum)[15]po_estimate = sheet.row_values(rownum)[16]reversal = sheet.row_values(rownum)[17]reversal_estimate = sheet.row_values(rownum)[18]not_available = sheet.row_values(rownum)[19]#item_id, category, brand, model_name, model_number, color, total_requirement, po_raised, po_estimate, reversal, reversal_estimate, not_available, deficit, remarks = sheet.row_values(rownum)[0:13]if po_raised > 0:try:txnClient.markOrdersAsPORaised(vendor, item_id, po_raised, po_estimate, False)except TransactionServiceException as tex:print tex.messageif reversal > 0:try:txnClient.markOrdersAsReversalInitiated(vendor, item_id, reversal, reversal_estimate, False)except TransactionServiceException as tex:print tex.messageif not_available > 0:try:txnClient.markOrdersAsNotAvailabke(vendor, item_id, not_available, 0, False)except TransactionServiceException as tex:print tex.messagesheet = workbook.sheet_by_index(1)num_rows = sheet.nrowsfor rownum in range(1, num_rows):item_id = sheet.row_values(rownum)[0]po_raised = sheet.row_values(rownum)[10]po_estimate = sheet.row_values(rownum)[11]reversal = sheet.row_values(rownum)[12]reversal_estimate = sheet.row_values(rownum)[13]not_available = sheet.row_values(rownum)[14]if po_raised > 0:try:txnClient.markOrdersAsPORaised(vendor, item_id, po_raised, po_estimate, True)except TransactionServiceException as tex:print tex.messageif reversal > 0:try:txnClient.markOrdersAsReversalInitiated(vendor, item_id, reversal, reversal_estimate, True)except TransactionServiceException as tex:print tex.messageif not_available > 0:try:txnClient.markOrdersAsNotAvailabke(vendor, item_id, not_available, 0, True)except TransactionServiceException as tex:print tex.messagefinally:#print filenameos.remove(filename)def fetch_report(type):filename = download_attachment(type, todays_date_string())if filename is None:sys.exit("The " + type + " report is not yet available.")return filenamedef todays_date_string():today_date = time.strftime("%d-%b-%Y")return '"' + today_date + '"'def get_py_datetime(date, timeval):# This should be a command line argument.# Refer http://docs.python.org/library/time.html#time.strftime to# get a complete list of format specifiers available for date time.time_format = "%d-%b-%y %H%M"if timeval is None or timeval == '--':timeval='0000'time_string = date + " " + timevalmytime = time.strptime(time_string, time_format)return datetime.datetime(*mytime[:6])def main():parser = optparse.OptionParser()parser.add_option("-V", "--vendor", dest="vendor",default=1, type="int",help="The VENDOR is ",metavar="PROVIDER")(options, args) = parser.parse_args()if len(args) != 0:parser.error("You've supplied extra arguments. Are you sure you want to run this program?")if options.vendor:process_procurement_report(options.vendor)if __name__ == '__main__':main()