Subversion Repositories SmartDukaan

Rev

Rev 8627 | Rev 8645 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
8616 vikram.rag 1
package in.shop2020;
2
 
3
import in.shop2020.model.v1.catalog.CatalogService;
4
import in.shop2020.model.v1.catalog.CatalogServiceException;
5
import in.shop2020.model.v1.catalog.Item;
6
import in.shop2020.model.v1.inventory.InventoryService;
7
import in.shop2020.model.v1.inventory.InventoryServiceException;
8
import in.shop2020.model.v1.inventory.VendorItemPricing;
9
import in.shop2020.model.v1.inventory.Warehouse;
10
import in.shop2020.model.v1.order.LineItem;
11
import in.shop2020.model.v1.order.OrderStatus;
12
import in.shop2020.model.v1.order.OrderType;
13
import in.shop2020.model.v1.order.SnapdealOrder;
14
import in.shop2020.model.v1.order.SourceDetail;
15
import in.shop2020.model.v1.order.Transaction;
16
import in.shop2020.model.v1.order.TransactionStatus;
17
import in.shop2020.model.v1.order.TransactionService.Client;
18
import in.shop2020.model.v1.user.User;
19
import in.shop2020.payments.PaymentException;
20
import in.shop2020.payments.PaymentStatus;
21
import in.shop2020.thrift.clients.CatalogClient;
22
import in.shop2020.thrift.clients.InventoryClient;
23
import in.shop2020.thrift.clients.PaymentClient;
24
import in.shop2020.thrift.clients.TransactionClient;
25
import in.shop2020.thrift.clients.UserClient;
26
 
27
import java.io.File;
28
import java.text.SimpleDateFormat;
29
import java.util.ArrayList;
30
import java.util.Calendar;
31
import java.util.Collections;
32
import java.util.Date;
33
import java.util.List;
34
import java.util.TimeZone;
35
 
36
import javax.xml.bind.JAXBContext;
37
import javax.xml.bind.JAXBException;
38
import javax.xml.bind.Marshaller;
39
import javax.xml.bind.Unmarshaller;
40
 
41
import org.apache.thrift.TException;
42
import org.apache.thrift.transport.TTransportException;
43
 
44
import order.SaholicAPI;
45
import order.ObjectFactory;
46
import order.SaholicAPI.Order;
47
 
48
public class ProcessSnapdealOrder {
8627 vikram.rag 49
	//private static final int SNAPDEAL_SOURCE_ID = 3;
8616 vikram.rag 50
	private static final int SNAPDEAL_SOURCE_ID = 7;
51
	private static final String FIRSTFLIGHT = "First Flight";
8627 vikram.rag 52
	private static final String DELHIVERY = "DELHIVERY";
53
	private static final String BLUEDART = "Bluedart";
8642 vikram.rag 54
	private static final String CHHOTU = "CHHOTU";
8627 vikram.rag 55
	private static String transactionId;
56
	private static final int SNAPDEAL_GATEWAY_ID = 18;
57
 
8616 vikram.rag 58
	public static void processSnapdealOrders(File file) throws JAXBException{
59
		JAXBContext jc = JAXBContext.newInstance(SaholicAPI.class);
60
		Unmarshaller unmarshaller = jc.createUnmarshaller();
61
		SaholicAPI orders = (SaholicAPI) unmarshaller.unmarshal(file);
62
		Marshaller marshaller = jc.createMarshaller();
63
		marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
64
		marshaller.marshal(orders, System.out);
65
		SourceDetail sourceDetail = null;
66
		User user = null;
67
		TransactionClient tsc = null;
68
		try {
69
			tsc = new TransactionClient();
70
			sourceDetail = tsc.getClient().getSourceDetail(SNAPDEAL_SOURCE_ID);
71
		} catch (Exception e) {
72
		}
73
		try {   
74
			in.shop2020.model.v1.user.UserContextService.Client userClient = new UserClient().getClient();
75
			user = userClient.getUserByEmail(sourceDetail.getEmail());
76
		} catch (Exception e) {
77
		}
78
		for(Order order:orders.getOrder()){
8627 vikram.rag 79
			long subOrderId = (long) order.getSuborderId();
80
			Client transaction_client = null;
81
			try {
82
				transaction_client = new TransactionClient().getClient();
83
				//transaction_client.snapdealOrderExists(subOrderId);
84
				System.out.println("Suborder id " + subOrderId);
85
				if(transaction_client.snapdealOrderExists(subOrderId)) {
86
					System.out.println("Suborder id exists");
87
					continue;
88
				}
89
 
90
			} catch (TTransportException e1) {
91
				// TODO Auto-generated catch block
92
				e1.printStackTrace();
93
			} catch (TException e) {
94
				// TODO Auto-generated catch block
95
				e.printStackTrace();
96
			}
97
			System.out.println("Inside Order Parsing");
8616 vikram.rag 98
			Transaction txn = new Transaction();
8627 vikram.rag 99
			System.out.println("User details are " + user.getActiveCartId());
8616 vikram.rag 100
			txn.setShoppingCartid(user.getActiveCartId());
8627 vikram.rag 101
			System.out.println("transaction created");
8616 vikram.rag 102
			txn.setCustomer_id(user.getUserId());
8627 vikram.rag 103
			System.out.println("User Id is " + user.getUserId());
8616 vikram.rag 104
			txn.setCreatedOn(new Date().getTime());
105
			txn.setTransactionStatus(TransactionStatus.INIT);
106
			txn.setStatusDescription("Order for Snapdeal ");
107
			List<in.shop2020.model.v1.order.Order> orderlist = new ArrayList<in.shop2020.model.v1.order.Order>();
108
			LineItem lineItem = null;
109
			try {
110
				lineItem = createLineItem(order.getSKUCode(),order.getSellingPricePerItem());
8627 vikram.rag 111
				System.out.println("Line item created");
8616 vikram.rag 112
			} catch (CatalogServiceException e) {
113
				// TODO Auto-generated catch block
114
				e.printStackTrace();
115
			} catch (TException e) {
116
				// TODO Auto-generated catch block
117
				e.printStackTrace();
118
			}
119
			in.shop2020.model.v1.order.Order t_order = new in.shop2020.model.v1.order.Order();
8627 vikram.rag 120
			t_order.setCustomer_id(user.getUserId());
121
			t_order.setCustomer_email(sourceDetail.getEmail());
122
			t_order.setCustomer_name(order.getCustomerName());
123
			t_order.setCustomer_address1("");
124
			t_order.setCustomer_address2("");
125
			t_order.setCustomer_city(order.getCity());
126
			t_order.setCustomer_state(order.getState());
127
			t_order.setCustomer_pincode(String.valueOf(order.getPINCode()));
128
			t_order.setTotal_amount(lineItem.getTotal_price());            
129
			t_order.setTotal_weight(lineItem.getTotal_weight());
130
			t_order.setLineitems(Collections.singletonList(lineItem));            
131
			t_order.setStatus(OrderStatus.SUBMITTED_FOR_PROCESSING);
132
			t_order.setStatusDescription("In Process");
133
			t_order.setCreated_timestamp(new Date().getTime());
134
			t_order.setOrderType(OrderType.B2C);
135
			t_order.setCod(false);
136
			System.out.println("t order created");
137
			try {
138
				Calendar time = Calendar.getInstance();
139
				time.add(Calendar.DAY_OF_MONTH, 1);
140
				t_order.setPromised_shipping_time(time.getTimeInMillis());
141
				t_order.setExpected_shipping_time(time.getTimeInMillis());
142
				time.add(Calendar.DAY_OF_MONTH, 3);
143
				t_order.setPromised_delivery_time(time.getTimeInMillis());
144
				t_order.setExpected_delivery_time(time.getTimeInMillis());
145
				System.out.println("Dates set in transaction");
146
			} catch(Exception e) {
147
				continue;
148
			}
149
			/*InventoryService.Client inventoryClient = null;
150
            //Warehouse fulfillmentWarehouse= null; 
8616 vikram.rag 151
            try {
8627 vikram.rag 152
            	//inventoryClient = new InventoryClient().getClient();
153
        		//VendorItemPricing vendorItemPricing = inventoryClient.getItemPricing(lineItem.getItem_id(), fulfillmentWarehouse.getVendor().getId());
154
        		//t_order.getLineitems().get(0).setTransfer_price(vendorItemPricing.getTransferPrice());
155
        		//t_order.getLineitems().get(0).setNlc(vendorItemPricing.getNlc());
8616 vikram.rag 156
			} catch (InventoryServiceException e) {
157
            	continue;
158
			} catch (TTransportException e) {
159
				// TODO Auto-generated catch block
160
				e.printStackTrace();
161
			} catch (TException e) {
162
				// TODO Auto-generated catch block
163
				e.printStackTrace();
8627 vikram.rag 164
			}*/
8616 vikram.rag 165
			if(order.getCourier().equalsIgnoreCase(FIRSTFLIGHT)) {
166
				t_order.setLogistics_provider_id(12);
167
			} else if(order.getCourier().equalsIgnoreCase(DELHIVERY)) {
168
				t_order.setLogistics_provider_id(13);
169
			} else if(order.getCourier().equalsIgnoreCase(BLUEDART)) {
170
				t_order.setLogistics_provider_id(14);
8642 vikram.rag 171
			}else if(order.getCourier().equalsIgnoreCase(CHHOTU)) {
172
				t_order.setLogistics_provider_id(16);
8616 vikram.rag 173
			} else {
8627 vikram.rag 174
				System.out.println("No Courier Match");
175
				continue;
8616 vikram.rag 176
			}
8627 vikram.rag 177
 
8616 vikram.rag 178
			t_order.setAirwaybill_no(String.valueOf(order.getAWBNumber()));
179
			t_order.setTracking_id(String.valueOf(order.getAWBNumber()));
8627 vikram.rag 180
			t_order.setTotal_amount(order.getSellingPricePerItem());
181
			t_order.setOrderType(OrderType.B2C);
182
			t_order.setSource(SNAPDEAL_SOURCE_ID);
183
			t_order.setOrderType(OrderType.B2C);
184
			orderlist.add(t_order);
185
			txn.setOrders(orderlist);
8616 vikram.rag 186
			try {
8627 vikram.rag 187
				String referenceCode = order.getReferenceCode();
188
				String productName = order.getProduct();
189
				SimpleDateFormat istFormatter = new SimpleDateFormat("dd/mm/yyyy");
190
				//SimpleDateFormat istFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
191
				Date snapdealTxnDate = istFormatter.parse(order.getOrderPlacedDate());
192
				transactionId =  String.valueOf(transaction_client.createTransaction(txn));
193
				createPayment(user, (new Long(subOrderId)).toString(), lineItem.getTotal_price());
194
 
195
				Transaction transaction = transaction_client.getTransaction(Long.parseLong(transactionId));
196
				in.shop2020.model.v1.order.Order snapdealorder = transaction.getOrders().get(0);
197
 
198
				//inventoryClient.reserveItemInWarehouse(lineItem.getItem_id(), fulfillmentWarehouse.getId(), 1, 
199
				//		snapdealorder.getId(), snapdealorder.getCreated_timestamp(), snapdealorder.getPromised_shipping_time(), snapdealorder.getLineitems().get(0).getQuantity());
200
 
201
 
202
				SnapdealOrder snapdealOrder = new SnapdealOrder();
203
				snapdealOrder.setOrderId(snapdealorder.getId());
204
				snapdealOrder.setSubOrderId(subOrderId);
205
				snapdealOrder.setReferenceCode(referenceCode);
206
				snapdealOrder.setProductName(productName);
207
				snapdealOrder.setSnapdealTxnDate(snapdealTxnDate.getTime());
208
				snapdealOrder.setListingPrice(lineItem.getTotal_price());
209
				transaction_client.createSnapdealOrder(snapdealOrder);
210
 
211
			} catch (Exception e) {
212
				System.out.println("Exception in finding suborderid");
213
				continue;
8616 vikram.rag 214
			}
8627 vikram.rag 215
 
216
 
8616 vikram.rag 217
		}
218
 
219
	}
220
 
221
	public static void createPayment(User user, String subOrderId, double amount) throws NumberFormatException, PaymentException, TException {
8627 vikram.rag 222
		in.shop2020.payments.PaymentService.Client client = new PaymentClient().getClient();
223
		long paymentId = client.createPayment(user.getUserId(), amount, SNAPDEAL_GATEWAY_ID, Long.valueOf(transactionId), false);
224
		client.updatePaymentDetails(paymentId, null, null, null, null, null, null, subOrderId, null, PaymentStatus.AUTHORIZED, null, null);
225
	}   
226
 
8616 vikram.rag 227
	public static LineItem createLineItem(long itemId, double amount) throws CatalogServiceException, TException {
8627 vikram.rag 228
		LineItem lineItem = new LineItem();
229
		CatalogService.Client catalogClient = new CatalogClient().getClient();
230
		Item item = catalogClient.getItem(itemId);
8616 vikram.rag 231
 
8627 vikram.rag 232
		lineItem.setProductGroup(item.getProductGroup());
233
		lineItem.setBrand(item.getBrand());
234
		lineItem.setModel_number(item.getModelNumber());
235
		lineItem.setModel_name(item.getModelName());
236
		lineItem.setExtra_info(item.getFeatureDescription());
237
		lineItem.setQuantity(1);
238
		lineItem.setItem_id(item.getId());
239
		lineItem.setUnit_weight(item.getWeight());
240
		lineItem.setTotal_weight(item.getWeight());
241
		lineItem.setUnit_price(amount);
242
		lineItem.setTotal_price(amount);
243
 
244
		if (item.getColor() == null || "NA".equals(item.getColor())) {
245
			lineItem.setColor("");
246
		} else {
247
			lineItem.setColor(item.getColor());
248
		}
249
		return lineItem;
8616 vikram.rag 250
	}
251
 
252
}