Rev 7149 | Blame | Compare with Previous | Last modification | View Log | RSS feed
#!/usr/bin/pythonimport optparseimport timeimport datetimeimport sysfrom elixir import sessionfrom random import randrangefrom shop2020.clients.LogisticsClient import LogisticsClientfrom shop2020.clients.CatalogClient import CatalogClientfrom shop2020.clients.InventoryClient import InventoryClientfrom shop2020.model.v1.order.impl.DataService import Attributefrom shop2020.thriftpy.logistics.ttypes import DeliveryType, PickUpTypeif __name__ == '__main__' and __package__ is None:import ossys.path.insert(0, os.getcwd())from shop2020.thriftpy.model.v1.order.ttypes import OrderStatus, TransactionServiceException, OrderTypefrom shop2020.model.v1.order.impl import DataServicefrom shop2020.model.v1.order.impl.DataService import Order, LineItem, Transactionfrom shop2020.model.v1.order.impl.DataAccessors import get_order, close_sessionfrom shop2020.model.v1.order.impl.DataAccessors import delhi_pincodesdef cancel(order):'''Cancel'''print("Your session has been closed")returndef process_order(order):'''Process Order'''if order.total_amount < 10998:print "Order already processed"returnbulk_order = Order()bulk_order.transaction = order.transactionbulk_order.customer_id = order.customer_idbulk_order.customer_email = order.customer_emailbulk_order.customer_name = order.customer_namebulk_order.customer_pincode = order.customer_pincodebulk_order.customer_address1 = order.customer_address1bulk_order.customer_address2 = order.customer_address2bulk_order.customer_city = order.customer_citybulk_order.customer_state = order.customer_statebulk_order.customer_mobilenumber = order.customer_mobilenumberbulk_order.total_weight = order.total_weightbulk_order.status = OrderStatus.ACCEPTEDbulk_order.statusDescription = "In Process";bulk_order.created_timestamp = order.created_timestampbulk_order.accepted_timestamp = datetime.datetime.now()bulk_order.cod = order.codbulk_order.orderType = OrderType.B2Cbulkbulk_order.pickupStoreId = 0bulk_order.otg = 0bulk_order.insurer = 0bulk_order.insuranceAmount = 0logistics_client = LogisticsClient().get_client()logistics_info = logistics_client.getLogisticsInfo(order.customer_pincode, 1, DeliveryType.PREPAID, PickUpType.SELF)bulk_order.logistics_provider_id = logistics_info.providerId;bulk_order.tracking_id = logistics_info.airway_billnobulk_order.airwaybill_no = logistics_info.airway_billnobulk_order.expected_delivery_time = order.expected_delivery_timebulk_order.promised_delivery_time = order.promised_delivery_timebulk_order.expected_shipping_time = order.expected_shipping_timebulk_order.promised_shipping_time = order.promised_shipping_timecatalog_client = CatalogClient().get_client()item = catalog_client.getItem(1173)litem = LineItem()litem.item_id = item.idlitem.productGroup = item.productGrouplitem.brand = item.brandlitem.model_number = item.modelNumberlitem.model_name = item.modelNamelitem.color = item.colorlitem.extra_info = "Complementary Order for A110, Order ID " + str(order.id)litem.quantity = 1litem.unit_price = order.total_amount - order.insuranceAmount - 9999litem.unit_weight = item.weightlitem.total_price = order.total_amount - order.insuranceAmount - 9999litem.total_weight = item.weightlitem.vatRate = 5.0bulk_order.lineitems.append(litem)bulk_order.total_amount = order.total_amount - order.insuranceAmount - 9999order.total_amount = 9999 + order.insuranceAmountorder.lineitems[0].unit_price = 9999order.lineitems[0].total_price = 9999inventory_client = InventoryClient().get_client()item_availability = inventory_client.getItemAvailabilityAtLocation(bulk_order.lineitems[0].item_id,1)bulk_order.warehouse_id = item_availability[2]bulk_order.fulfilmentWarehouseId = item_availability[0]session.commit()print "New Bulk OrderId : " + str(bulk_order.id)returnACTIONS = {0: cancel,1: process_order}def get_py_datetime(time_string):time_format = "%Y-%m-%d %H%M"mytime = time.strptime(time_string, time_format)return datetime.datetime(*mytime[:6])def main():parser = optparse.OptionParser()parser.add_option("-H", "--host", dest="hostname",default="localhost",type="string", help="The HOST where the DB server is running",metavar="HOST")parser.add_option("-O", "--order", dest="orderId",default =0,type="int", help="A110 OrderId to be processed",metavar="NUM")(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.orderId == 0:print "Usage : -O OrderId -H Hostname"returnDataService.initialize(db_hostname=options.hostname, echoOn=False)orderId = options.orderIdtry:order = get_order(orderId)print("Please check the details of the order below and ensure that it's the same order which you want to modify:")print("Order Id:\t\t" + str(order.id))print("Customer Name:\t\t" + order.customer_name)print("Pincode:\t\t" + order.customer_pincode)print("Amount:\t\t\t" + str(order.total_amount))print("Created On:\t\t" + str(order.created_timestamp))print("Current Status:\t\t" + str(order.status))print("Status Description:\t\t" + order.statusDescription)print("Logistics provider id:\t\t" + str(order.logistics_provider_id))print("Airway bill number:\t\t" + order.airwaybill_no)print("Ordered Items description:")for lineitem in order.lineitems:print("Item Id:" + str(lineitem.item_id) + "\tBrand: " + str(lineitem.brand) + "\tModel: " + str(lineitem.model_number) + "\tColor: " + str(lineitem.color))print("You can perform following operations:")for (key, val) in ACTIONS.iteritems():print("[" + str(key) + "]" + val.__doc__ )raw_action = raw_input("What do you want to do? ")if raw_action is None or raw_action == "":print("Your session has been closed.")returntry:action = int(raw_action)except ValueError:print("Invalid input.")returnif action > max(ACTIONS.keys()):print("Invalid input.")returnACTIONS[action](order)except TransactionServiceException as tsex:print tsex.messagefinally:close_session()if __name__ == '__main__':main()