Subversion Repositories SmartDukaan

Rev

Rev 20991 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
20110 kshitij.so 1
package in.shop2020.serving.controllers;
2
 
3
import java.text.SimpleDateFormat;
4
import java.util.ArrayList;
5
 
6
import java.util.Arrays;
7
import java.util.Calendar;
8
import java.util.HashMap;
9
import java.util.List;
10
import java.util.Map;
11
 
12
import org.apache.shiro.SecurityUtils;
13
import org.apache.struts2.convention.annotation.InterceptorRef;
14
import org.apache.struts2.convention.annotation.InterceptorRefs;
15
import org.apache.thrift.TException;
16
import org.apache.thrift.transport.TTransportException;
17
import org.json.JSONArray;
18
 
19
import in.shop2020.model.v1.order.Order;
20
import in.shop2020.model.v1.order.OrderStatus;
21
import in.shop2020.model.v1.order.RefundType;
22
import in.shop2020.model.v1.order.ReplacementShippingType;
23
import in.shop2020.model.v1.order.ReturnAction;
24
import in.shop2020.model.v1.order.ReturnOrderInfo;
25
import in.shop2020.model.v1.order.ReturnPickupRequest;
26
import in.shop2020.model.v1.order.ReturnPickupType;
27
import in.shop2020.model.v1.order.ReturnTransaction;
28
import in.shop2020.model.v1.order.ReturnTransactionStatus;
29
import in.shop2020.model.v1.order.ReturnTxnPickupStatus;
30
import in.shop2020.model.v1.order.ReturnTxnResolutionStatus;
31
import in.shop2020.model.v1.order.TransactionService.Client;
32
import in.shop2020.model.v1.order.TransactionServiceException;
33
import in.shop2020.model.v1.user.Address;
34
import in.shop2020.model.v1.user.AddressType;
35
import in.shop2020.model.v1.user.User;
36
import in.shop2020.model.v1.user.UserContextException;
20201 kshitij.so 37
import in.shop2020.payments.Payment;
38
import in.shop2020.payments.PaymentException;
39
import in.shop2020.thrift.clients.PaymentClient;
20110 kshitij.so 40
import in.shop2020.thrift.clients.TransactionClient;
41
import in.shop2020.thrift.clients.UserClient;
42
 
43
@InterceptorRefs({
44
	@InterceptorRef("myDefault"),
45
	@InterceptorRef("returnTransactionValidator")
46
})
47
 
48
public class ReturnTransactionsController extends BaseController {
49
 
50
	/**
51
	 * 
52
	 */
53
	private static final long serialVersionUID = 1L;
54
	private static final String VIEW = "return-transactions-view";
55
	private static final String CONFIRM = "confirm-return-transaction";
56
	private static final String VIEW_RETURN_TRANSACTION = "view-return-transaction";
57
	private static final String VIEW_RETURN_ORDER = "view-return-order";
58
	private static final String PICKUP_VIEW = "pickup-view";
59
	private String userId;
60
	private String returnType;
61
	private List<Order> orders;
62
	private String result;
63
	private String tableData;
64
	private List<Address> addresses;
65
	private String name;
66
	private String line1;
67
	private String line2;
68
	private String landmark;
69
	private String city;
70
	private String state;
71
	private String country;
72
	private String pincode;
73
	private String phone;
74
	private String addressType;
75
	private String addressId;
76
	private ReturnTransaction returnTransaction;
77
	private String newReturnTransactionStatus;
78
	private String returnTransactionId;
79
	private String returnOrderId;
80
	private ReturnOrderInfo returnOrderInfo;
81
	private List<ReturnOrderInfo> returnOrderInfoList;
82
	private String returnOrderIdsForPickUp;
83
	private String pickupRequestId;
84
	private ReturnPickupRequest returnPickupRequest;
85
	private String pickupRequestNo;
86
	private String logisticProviderId;
87
	private String pickupStatus;
88
	private String promised_pickup_timestamp;
89
	private String pickedUpAt;
90
	private List<ReturnTransaction> returnTransactions;
91
	private String receivedQty;
92
	private String receivedCondition;
93
	private String[] serialNumbers;
94
	private String scanFreebie;
95
	private String productUsable;
96
	private String splitOrderQuantity;
97
	private String refundAmount;
98
	private String refundType;
99
	private String refundReason;
100
	private String chequeDetails;
101
	private String refundDescription;
102
	private String couponDetails;
103
	private String shippingType;
104
	private Order order;
105
 
106
	public String index() {
107
		return INDEX;
108
	}
109
 
110
	public String view() throws NumberFormatException, TException {
111
		transactionServiceClient = new TransactionClient().getClient();
112
		setOrders(transactionServiceClient.getEligibleOrdersForReturn(
113
				Long.valueOf(userId), returnType, canOverideWarranty()));
114
		return VIEW;
115
	}
20991 kshitij.so 116
 
20110 kshitij.so 117
	private boolean canOverideWarranty(){
118
		return SecurityUtils.getSubject().hasRole("TeamLead")?true:false;
119
	}
120
 
121
	public String getReturnTransactionsForUser() throws TransactionServiceException, NumberFormatException, TException{
122
		transactionServiceClient = new TransactionClient().getClient();
123
		transactionServiceClient.getReturnTransactionsForCustomer(null, null, null, 0l, Long.valueOf(userId));
124
		setReturnTransactions(transactionServiceClient.getReturnTransactionsForCustomer(null, null, null, 0l, Long.valueOf(userId)));
125
		return "return-transaction-all";
126
	}
127
 
128
	public String viewPickUp() throws NumberFormatException, TException{
129
		transactionServiceClient = new TransactionClient().getClient();
130
		setReturnOrderInfoList(transactionServiceClient.getEligibleReturnOrdersForPickup(Long.valueOf(userId)));
131
		return PICKUP_VIEW;
132
	}
133
 
134
	public String validateReturn() throws NumberFormatException,
135
	UserContextException, TException {
136
		result = "true";
137
		List<ReturnOrderInfo> returnOrderList = getTableData();
138
		Map<Long, Long> returnOrdersMap = new HashMap<Long, Long>();
139
		for (ReturnOrderInfo r : returnOrderList){
140
			if (r.getReturnPickupType() == ReturnPickupType.NOT_REQUIRED && r.getReturnAction() == ReturnAction.REPLACEMENT){
141
				result = "false";
142
			}
143
			returnOrdersMap.put(r.getOrderId(), r.getReturnQuantity());
144
		}
145
		transactionServiceClient = new TransactionClient().getClient();
146
		boolean t_result = transactionServiceClient.validateReturnTransaction(Long.valueOf(userId), returnOrdersMap, returnType, canOverideWarranty());
147
		if(!t_result){
148
			result = "false";
149
		}
150
		if (!Boolean.valueOf(result)) {
151
			return "result";
152
		}
153
		userContextServiceClient = new UserClient().getClient();
154
		setAddresses(userContextServiceClient.getAllAddressesForUser(Long
155
				.valueOf(userId)));
156
		return CONFIRM;
157
	}
158
 
159
	public String createReturnPickup() throws TransactionServiceException, TException{
160
		String[] returnOrderIds = returnOrderIdsForPickUp.split(",");
161
		List<Long> returnOrders = new ArrayList<Long>();
162
		for (String s : returnOrderIds){
163
			returnOrders.add(Long.valueOf(s));
164
		}
165
		transactionServiceClient = new TransactionClient().getClient();
166
		long t_requestPickupId = transactionServiceClient.createReturnPickupRequest(returnOrders);
167
		if (t_requestPickupId==0){
168
			throw new TransactionServiceException();
169
		}
170
		setPickupRequestId(String.valueOf(t_requestPickupId));
171
		setReturnPickupRequest(transactionServiceClient.getReturnPickupRequest(t_requestPickupId));
172
		setReturnOrderInfoList(transactionServiceClient.getAllReturnOrdersForReturnPickupRequest(t_requestPickupId));
173
		return "pick-up-index";
174
	}
175
 
176
	public String viewReturnPickup() throws NumberFormatException, TException, TransactionServiceException{
177
		transactionServiceClient = new TransactionClient().getClient();
178
		ReturnPickupRequest t_retuenPickuprequest = transactionServiceClient.getReturnPickupRequest(Long.valueOf(pickupRequestId));
179
		setPickupRequestId(String.valueOf(t_retuenPickuprequest.getId()));
180
		setReturnPickupRequest(t_retuenPickuprequest);
181
		setReturnOrderInfoList(transactionServiceClient.getAllReturnOrdersForReturnPickupRequest(t_retuenPickuprequest.getId()));
182
		return "pick-up-index";
183
	}
184
 
20201 kshitij.so 185
	public String refundReceivedOrder() throws NumberFormatException, TransactionServiceException, TException, PaymentException{
20991 kshitij.so 186
		try{
187
			transactionServiceClient = new TransactionClient().getClient();
188
			returnOrderInfo = transactionServiceClient.getReturnOrderInfo(Long.valueOf(returnOrderId));
189
			returnOrderInfo.setRefundType(RefundType.findByValue(Integer.valueOf(refundType)));
190
			returnOrderInfo.setRefundedBy(getAgentName());
191
			if (returnOrderInfo.getRefundType() == RefundType.INIT){
192
				setResult("Illegal refund type");
193
				return "result";
20110 kshitij.so 194
			}
20991 kshitij.so 195
			in.shop2020.model.v1.order.Order t_order = transactionServiceClient.getOrder(returnOrderInfo.getOrderId());
196
			PaymentClient paymentServiceClient = new PaymentClient();
197
			List<Payment> orderPayments =null; 
198
			if(!t_order.isCod()){
199
				orderPayments =paymentServiceClient.getClient()
200
				.getPaymentForTxnId(t_order.getTransactionId());
201
			}
20110 kshitij.so 202
 
203
 
20991 kshitij.so 204
			List<in.shop2020.model.v1.order.Attribute> attrList = new ArrayList<in.shop2020.model.v1.order.Attribute>();
205
			in.shop2020.model.v1.order.Attribute attr1 = new in.shop2020.model.v1.order.Attribute();
206
			attr1.setName("Refund_Option");
207
			in.shop2020.model.v1.order.Attribute attr2 = new in.shop2020.model.v1.order.Attribute();
208
			attr2.setName("Refund_Amount");
209
			in.shop2020.model.v1.order.Attribute attr3 = new in.shop2020.model.v1.order.Attribute();
210
			attr3.setName("Refund_TimeStamp");
211
			SimpleDateFormat timestmapFormat = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss");
212
			attr2.setValue(refundAmount);
213
			attr3.setValue(timestmapFormat.format(Calendar.getInstance().getTime()));
214
			if (RECEIVE_PICKUP_STATE_CHECK.contains(returnOrderInfo.getReturnStatus()) && returnOrderInfo.getReturnTxnResolutionStatus() == ReturnTxnResolutionStatus.QUALITY_CHECK){
215
				if (returnOrderInfo.getReturnAction() == ReturnAction.REPLACEMENT){
216
					if (returnOrderInfo.getRefundType() != RefundType.REPLACEMENT){
217
						setResult("Refund type should be replacement");
20110 kshitij.so 218
						return "result";
219
					}
20991 kshitij.so 220
					returnOrderInfo.setRefundType(RefundType.REPLACEMENT);
221
					returnOrderInfo.setShippingType(ReplacementShippingType.findByValue(Integer.valueOf(shippingType)));
222
					if (returnOrderInfo.getShippingType() != ReplacementShippingType.IMMEDIATE){
223
						setResult("Shipping type should be immediate");
224
						return "result";
225
					}
20110 kshitij.so 226
				}
20991 kshitij.so 227
				else{
228
					if(!(SecurityUtils.getSubject().hasRole("TeamLead"))){
229
						setResult("Admin rights are required to process this operation");
230
						return "result";
231
					}
20110 kshitij.so 232
 
20991 kshitij.so 233
					if (returnOrderInfo.getRefundType() == null){
234
						setResult("Illegal refund type");
20110 kshitij.so 235
						return "result";
236
					}
20991 kshitij.so 237
 
238
					if (returnOrderInfo.getRefundType() == RefundType.CHEQUE){
239
						if (chequeDetails == null || chequeDetails.trim().isEmpty()){
240
							setResult("Cheque details should be filled out");
241
							return "result";
242
						}
243
						returnOrderInfo.setRefundType(RefundType.CHEQUE);
244
						attr1.setValue("Refund By Cheque: "+chequeDetails);
245
						attrList.add(attr1);
246
						attrList.add(attr2);
247
						attrList.add(attr3);
248
					}
249
 
250
					if (returnOrderInfo.getRefundType() == RefundType.COUPON){
251
						if (couponDetails == null || couponDetails.trim().isEmpty()){
252
							setResult("Coupon details should be filled out");
253
							return "result";
254
						}
255
						attr1.setValue("Refund By Coupon: "+couponDetails);
256
						attrList.add(attr1);
257
						attrList.add(attr2);
258
						attrList.add(attr3);
259
						returnOrderInfo.setRefundType(RefundType.COUPON);
260
					}
261
 
262
					if (returnOrderInfo.getRefundType() == RefundType.GATEWAY){
263
						returnOrderInfo.setRefundType(RefundType.GATEWAY);
264
						attr1.setValue("Refund By Payment Gatway: "+refundDescription);
265
						attrList.add(attr2);
266
						attrList.add(attr3);
267
						attrList.add(attr1);
268
					}
269
 
270
					if (Double.valueOf(refundAmount) > returnOrderInfo.getLineitem().getTotal_price()){
271
						setResult("Refund amount can;t be greater than order amount");
272
						return "result";
273
					}
20110 kshitij.so 274
				}
275
 
20991 kshitij.so 276
				if (refundReason == null || refundReason.trim().isEmpty()){
277
					setResult("Refund Reason should be filled out");
278
					return "result";
20110 kshitij.so 279
				}
280
 
20991 kshitij.so 281
				if (refundDescription == null || refundDescription.trim().isEmpty()){
282
					setResult("Refund Reason should be filled out");
20110 kshitij.so 283
					return "result";
284
				}
285
 
20991 kshitij.so 286
				returnOrderInfo.setRefundReason(refundReason);
287
				returnOrderInfo.setRefundDescription(refundDescription);
20992 kshitij.so 288
				returnOrderInfo.setRefundAmount(Double.valueOf(refundAmount));
20991 kshitij.so 289
				boolean t_result = transactionServiceClient.refundReturnOrder(returnOrderInfo, attrList);
290
				if(t_result){
291
					setResult("Refunded successfully");
292
					return "result";
293
				}
294
				setResult("Unable to refund or replace");
20110 kshitij.so 295
				return "result";
296
			}
20991 kshitij.so 297
			setResult("Illegal operation");
20110 kshitij.so 298
			return "result";
299
		}
20991 kshitij.so 300
		catch(Exception e){
301
			e.printStackTrace();
302
			setResult("Some exception occured");
303
			return "result";
304
		}
20110 kshitij.so 305
	}
306
 
307
	public String markReturnNotPickedUp() throws TransactionServiceException, TException{
308
		transactionServiceClient = new TransactionClient().getClient();
309
		returnOrderInfo = transactionServiceClient.getReturnOrderInfo(Long.valueOf(returnOrderId));
310
		if ((returnOrderInfo.getReturnStatus().equalsIgnoreCase("RET_REQUEST_AUTHORIZED") || returnOrderInfo.getReturnStatus().equalsIgnoreCase("DOA_REQUEST_AUTHORIZED"))&& returnOrderInfo.getReturnPickupType() == ReturnPickupType.NOT_REQUIRED){
311
			if(refundReason.trim()==null || refundReason.trim().isEmpty()){
312
				setResult("Refund reason can't be empty");
313
				return "result";
314
			}
315
			returnOrderInfo.setRefundReason(refundReason.trim());
316
			returnOrderInfo.setRefundAmount(Double.valueOf(refundAmount));
317
			if (returnOrderInfo.getRefundAmount() > returnOrderInfo.getLineitem().getTotal_price()){
318
				setResult("Refund amount can;t be greater than order amount");
319
				return "result";
320
			}
321
			returnOrderInfo.setRefundType(RefundType.findByValue(Integer.valueOf(refundType)));
322
			if (returnOrderInfo.getRefundType() != RefundType.WALLET){
323
				setResult("Refund type should be wallet");
324
				return "result";
325
			}
326
			returnOrderInfo.setRefundedBy(getAgentName());
327
			boolean t_result = transactionServiceClient.markReturnNotRequiredOrdersProcessed(returnOrderInfo);
328
			if (t_result){
329
				setResult("Refund processed successfully");
330
				return "result";
331
			}
332
			setResult("Unable to process refund");
333
			return "result";
334
		}
335
		setResult("Illegal operation");
336
		return "result";
337
	}
338
 
339
	public String updateReturnPickup() throws TransactionServiceException, TException{
340
		transactionServiceClient = new TransactionClient().getClient();
341
		ReturnPickupRequest t_retuenPickuprequest = transactionServiceClient.getReturnPickupRequest(Long.valueOf(pickupRequestId));
342
		ReturnPickupRequest rpr = new ReturnPickupRequest();
343
		rpr.setId(Long.valueOf(pickupRequestId));
344
		rpr.setPickupStatus(ReturnTxnPickupStatus.findByValue(Integer.valueOf(pickupStatus)));
345
 
346
		if (ReturnTxnPickupStatus.PICKUP_CONFIRMED == rpr.getPickupStatus()){
347
			rpr.setLogisticsProviderId(Long.valueOf(logisticProviderId));
348
			rpr.setPickupRequestNo(pickupRequestNo);
349
		}
350
 
351
		if (ReturnTxnPickupStatus.PICKUP_SCHEDULED == rpr.getPickupStatus()){
352
			try{
353
				rpr.setPromised_pickup_timestamp(Long.valueOf(promised_pickup_timestamp));
354
			}
355
			catch(Exception e){
356
				setResult("Illegal promised pickup timestamp");
357
				return "result";
358
			}
359
		}
360
 
361
		if (ReturnTxnPickupStatus.PICKUP_IN_TRANSIT == rpr.getPickupStatus()){
362
			try{
363
				rpr.setPickedUpAt(Long.valueOf(pickedUpAt));
364
			}
365
			catch(Exception e){
366
				setResult("Illegal Pickedup timestamp");
367
				return "result";
368
			}
369
		}
370
 
371
		String validation_result = validateReturnPickupUpdateRequest(rpr,t_retuenPickuprequest);
372
		if (validation_result.isEmpty()){
373
			transactionServiceClient.updateReturnPickupRequest(rpr);
374
			setResult("Status updated successfully");
375
			return "result";
376
		}
377
		setResult(validation_result);
378
		return "result";
379
	}
380
 
381
 
382
	public String receiveItem() throws TransactionServiceException, TException{
383
		transactionServiceClient = new TransactionClient().getClient();
384
		returnOrderInfo = transactionServiceClient.getReturnOrderInfo(Long.valueOf(returnOrderId));
385
		if (returnOrderInfo.getReturnQuantity() != Long.valueOf(receivedQty)){
386
			setResult("Received Qty is not equal to return quantity");
387
			return "result";
388
		}
389
		if (returnOrderInfo.getFreebieItemId() == 0 && Long.valueOf(scanFreebie)==1){
390
			setResult("No freebie was given.");
391
			return "result";
392
		}
393
 
394
		Map<String,String> info = new HashMap<String,String>();
395
		Map<Long, Map<String,String>> returnOrderMap = new HashMap<Long,Map<String,String>>();
396
		info.put("ReceiveCondition", receivedCondition);
397
		info.put("Quantity", receivedQty);
398
		info.put("ScanFreebie",Long.valueOf(scanFreebie)==1?"yes":"no");
399
		info.put("productUsable",Long.valueOf(productUsable)==1?"true":"false");
400
		String serialNumberValues = "";
401
		for(String s : serialNumbers){
402
			serialNumberValues = serialNumberValues+s.trim()+",";
403
		}
20201 kshitij.so 404
		info.put("SerialNumbers", serialNumberValues);
20110 kshitij.so 405
		returnOrderMap.put(returnOrderInfo.getId(), info);
406
		boolean receiveResult = transactionServiceClient.receiveReturnPickup(returnOrderMap, 0l);
407
		setResult(String.valueOf(receiveResult));
408
		return "result";
409
	}
410
 
411
	private String validateReturnPickupUpdateRequest(ReturnPickupRequest rpr, ReturnPickupRequest t_retuenPickuprequest) throws TransactionServiceException, TException{
412
		StringBuilder sb = new StringBuilder();
413
		if (ReturnTxnPickupStatus.PICKUP_REQUESTED == rpr.getPickupStatus()){
414
			if(!(t_retuenPickuprequest.getPickupStatus() == ReturnTxnPickupStatus.PENDING)){
415
				sb.append("Illegal operation -Pickup Status check failed");
416
			}
417
		}
418
 
419
		if (ReturnTxnPickupStatus.PICKUP_CONFIRMED == rpr.getPickupStatus()){
420
			if(!(t_retuenPickuprequest.getPickupStatus() == ReturnTxnPickupStatus.PICKUP_REQUESTED)){
421
				sb.append("Illegal operation -Pickup Status check failed");
422
			}
423
			if (providerNameMap.get(rpr.getLogisticsProviderId())==null){
424
				sb.append("Logistic provider is not valid");
425
			}
426
			if(rpr.getPickupRequestNo()==null || rpr.getPickupRequestNo().trim().isEmpty() ){
427
				sb.append("Request pickup number can't be empty");
428
			}
429
		}
430
 
431
		if (ReturnTxnPickupStatus.PICKUP_RECEIVED == rpr.getPickupStatus()){
432
			if(!(t_retuenPickuprequest.getPickupStatus() == ReturnTxnPickupStatus.PICKUP_IN_TRANSIT)){
433
				sb.append("Illegal operation -Pickup Status check failed");
434
			}
435
 
436
			List<ReturnOrderInfo> all_return_orders = transactionServiceClient.getAllReturnOrdersForReturnPickupRequest(t_retuenPickuprequest.getId());
437
			for (ReturnOrderInfo r : all_return_orders){
438
				if (!RECEIVE_PICKUP_STATE_CHECK.contains(r.getReturnStatus())){
439
					sb.append("Return Order "+r.getId()+" is not marked received.\n");
440
				}
441
			}
442
		}
443
 
444
		return sb.toString();
445
	}
446
 
447
	public String addNewAddress() throws NumberFormatException,
448
	UserContextException, TException {
449
		Address address = new Address();
450
		address.setLine1(line1);
451
		address.setLine2(line2);
452
		address.setLandmark(landmark);
453
		address.setCity(city);
454
		address.setState(state);
455
		address.setPin(pincode);
456
		address.setCountry(country);
457
		address.setEnabled(true);
458
		address.setType(AddressType.findByValue(Integer.valueOf(addressType)));
459
		address.setName(name);
460
		address.setPhone(phone);
461
		String sb = validateAddress(address);
462
		if (sb.length() == 0) {
463
			userContextServiceClient = new UserClient().getClient();
464
			userContextServiceClient.addAddressForUser(Long.valueOf(userId),
465
					address, false);
466
		}
467
		setResult(sb);
468
		return "result";
469
	}
470
 
471
	private String validateAddress(Address t_address) {
472
		StringBuilder sb = new StringBuilder();
473
		if (t_address.getLine1().trim().length() == 0) {
474
			sb.append("Line1 can't be empty.");
475
		}
476
		if (t_address.getLine2().trim().length() == 0) {
477
			sb.append("Line2 can't be empty.");
478
		}
479
		if (t_address.getCity().trim().length() == 0) {
480
			sb.append("City can't be empty.");
481
		}
482
		if (t_address.getState().trim().length() == 0) {
483
			sb.append("State can't be empty.");
484
		}
485
		if (t_address.getPin().trim().length() < 6) {
486
			sb.append("Not valid pincode");
487
		}
488
		if (t_address.getPhone().trim().length() < 10) {
489
			sb.append("Not valid phone number");
490
		}
491
		if (t_address.getName().trim().length() == 0) {
492
			sb.append("Not valid name");
493
		}
494
		return sb.toString();
495
	}
496
 
497
	public String createReturnTransaction() throws UserContextException,
498
	TException, TransactionServiceException {
499
		ReturnTransaction t_returnTransaction = new ReturnTransaction();
500
		t_returnTransaction.setAddress_id(Long.valueOf(addressId));
501
		userContextServiceClient = new UserClient().getClient();
502
		Address address = userContextServiceClient
503
		.getAddressById(t_returnTransaction.getAddress_id());
504
		User user = userContextServiceClient.getUserById(Long.valueOf(userId));
505
		t_returnTransaction.setCustomer_id(user.getUserId());
506
		t_returnTransaction.setCustomer_name(address.getName());
507
		t_returnTransaction.setCustomer_email(user.getEmail());
508
		t_returnTransaction.setPincode(address.getPin());
509
		t_returnTransaction.setCustomerPhone(address.getPhone());
510
		t_returnTransaction.setCustomerCity(address.getCity());
511
		t_returnTransaction.setCustomerState(address.getState());
512
		t_returnTransaction.setCustomerAddress(address.getLine1() + " "
513
				+ address.getLine2());
514
		List<ReturnOrderInfo> returnOrders = getTableData();
515
		t_returnTransaction.setReturnOrders(returnOrders);
516
		transactionServiceClient = new TransactionClient().getClient();
517
		returnTransaction = transactionServiceClient.createReturnTransaction(
518
				t_returnTransaction, returnType, canOverideWarranty());
519
		if (returnTransaction.getId() == 0) {
520
			setResult(String.valueOf(returnTransaction.getId()));
521
			return "result";
522
		}
523
		return VIEW_RETURN_TRANSACTION;
524
	}
525
 
526
	public String viewReturnTransaction() throws NumberFormatException, TransactionServiceException, TException {
527
		returnTransaction = getReturnTransaction(Long.valueOf(returnTransactionId));
528
		return VIEW_RETURN_TRANSACTION;
529
	}
530
 
531
	public String viewReturnOrder() throws NumberFormatException, TransactionServiceException, TException {
532
		returnTransaction = getReturnTransaction(Long.valueOf(returnTransactionId));
533
		return VIEW_RETURN_TRANSACTION;
534
	}
535
 
536
	private ReturnTransaction getReturnTransaction(long id) throws TransactionServiceException, TException{
537
		transactionServiceClient = new TransactionClient().getClient();
538
		ReturnTransaction t_returnTransaction = transactionServiceClient.getReturnTransaction(id);
539
		return t_returnTransaction;
540
	}
541
 
542
	public String changeStatusForReturnTransaction() throws NumberFormatException, TransactionServiceException, TException{
543
		ReturnTransaction t_returnTransaction = getReturnTransaction(Long.valueOf(returnTransactionId));
544
		//Check forward_state_map to validate new status
545
		List<ReturnTransactionStatus> further_states = FORWARD_STATE_MAP.get(t_returnTransaction.getStatus());
546
		if (further_states.contains(ReturnTransactionStatus.findByValue(Integer.valueOf(newReturnTransactionStatus)))){
547
			transactionServiceClient = new TransactionClient().getClient();
548
			transactionServiceClient.changeReturnTransactionStatus(t_returnTransaction.getId(), ReturnTransactionStatus.findByValue(Integer.valueOf(newReturnTransactionStatus)), null);
549
			setResult("Status changed successfully");
550
		}
551
		else{
552
			setResult("Illegal operation");
553
		}
554
		return "result";
555
	}
556
 
557
	public String getReturnOrderInfoForId() throws NumberFormatException, TransactionServiceException, TException{
558
		transactionServiceClient = new TransactionClient().getClient();
559
		setReturnOrderInfo(transactionServiceClient.getReturnOrderInfo(Long.valueOf(returnOrderId)));
560
		setOrder(transactionServiceClient.getOrder(returnOrderInfo.getOrderId()));
561
		return VIEW_RETURN_ORDER;
562
	}
563
 
564
	public String splitReturnOrder() throws TransactionServiceException, NumberFormatException, TException{
565
		transactionServiceClient = new TransactionClient().getClient();
566
		ReturnOrderInfo new_return_order = transactionServiceClient.splitReturnOrderInfo(Long.valueOf(returnOrderId), Long.valueOf(splitOrderQuantity));
567
		if (new_return_order.getId()==0){
568
			throw new TransactionServiceException();
569
		}
570
		setResult("Splitted return order Id "+new_return_order.getId());
571
		return "result";
572
	}
573
 
574
	public void setUserId(String userId) {
575
		this.userId = userId;
576
	}
577
 
578
	public String getUserId() {
579
		return userId;
580
	}
581
 
582
	public void setOrders(List<Order> orders) {
583
		this.orders = orders;
584
	}
585
 
586
	public List<Order> getOrders() {
587
		return orders;
588
	}
589
 
590
	public void setResult(String result) {
591
		this.result = result;
592
	}
593
 
594
	public String getResult() {
595
		return result;
596
	}
597
 
598
	public void setTableData(String tableData) {
599
		this.tableData = tableData;
600
	}
601
 
602
	public List<ReturnOrderInfo> getTableData() {
603
		JSONArray jsonTableData = new JSONArray(tableData);
604
		ArrayList<ReturnOrderInfo> returnOrderInfoList = new ArrayList<ReturnOrderInfo>();
605
		for (int i = 0; i < jsonTableData.length(); i++) {
606
			ReturnOrderInfo r = new ReturnOrderInfo();
607
			r.setOrderId(Long.valueOf(jsonTableData.getJSONObject(i).getString(
608
			"orderId")));
609
			r.setReturnQuantity(Long.valueOf(jsonTableData.getJSONObject(i)
610
					.getString("returnQty")));
611
			if (r.getReturnQuantity() == 0) {
612
				continue;
613
			}
614
			r.setReturnAction(ReturnAction.findByValue(Integer
615
					.valueOf(jsonTableData.getJSONObject(i).getString("action"))));
616
			r.setReturnPickupType(ReturnPickupType.findByValue(Integer
617
					.valueOf(jsonTableData.getJSONObject(i).getString("returnPickupType"))));
618
			returnOrderInfoList.add(r);
619
		}
620
		return returnOrderInfoList;
621
	}
622
 
623
	public int checkForOriginalOrders(){
624
		try{
625
			if(order.getOriginalOrderId()!=0l && order.getOriginalOrderId() > 0l){
626
				transactionServiceClient = new TransactionClient().getClient();
627
				in.shop2020.model.v1.order.Order old_order = transactionServiceClient.getOrder(order.getOriginalOrderId());
628
				if(old_order.isCod()){
629
					return 1;
630
				}
631
				else{
632
					return 2;
633
				}
634
			}
635
		}
636
		catch(Exception e){
637
			log.error(e);
638
		}
639
		return 0;
640
	}
641
 
642
	public void setAddresses(List<Address> addresses) {
643
		this.addresses = addresses;
644
	}
645
 
646
	public List<Address> getAddresses() {
647
		return addresses;
648
	}
649
 
650
	public String getName() {
651
		return name;
652
	}
653
 
654
	public void setName(String name) {
655
		this.name = name;
656
	}
657
 
658
	public String getLine1() {
659
		return line1;
660
	}
661
 
662
	public void setLine1(String line1) {
663
		this.line1 = line1;
664
	}
665
 
666
	public String getLine2() {
667
		return line2;
668
	}
669
 
670
	public void setLine2(String line2) {
671
		this.line2 = line2;
672
	}
673
 
674
	public String getLandmark() {
675
		return landmark;
676
	}
677
 
678
	public void setLandmark(String landmark) {
679
		this.landmark = landmark;
680
	}
681
 
682
	public String getCity() {
683
		return city;
684
	}
685
 
686
	public void setCity(String city) {
687
		this.city = city;
688
	}
689
 
690
	public String getState() {
691
		return state;
692
	}
693
 
694
	public void setState(String state) {
695
		this.state = state;
696
	}
697
 
698
	public String getCountry() {
699
		return country;
700
	}
701
 
702
	public void setCountry(String country) {
703
		this.country = country;
704
	}
705
 
706
	public String getPincode() {
707
		return pincode;
708
	}
709
 
710
	public void setPincode(String pincode) {
711
		this.pincode = pincode;
712
	}
713
 
714
	public String getPhone() {
715
		return phone;
716
	}
717
 
718
	public void setPhone(String phone) {
719
		this.phone = phone;
720
	}
721
 
722
	public String getAddressType() {
723
		return addressType;
724
	}
725
 
726
	public void setAddressType(String addressType) {
727
		this.addressType = addressType;
728
	}
729
 
730
	public void setReturnType(String returnType) {
731
		this.returnType = returnType;
732
	}
733
 
734
	public String getReturnType() {
735
		return returnType;
736
	}
737
 
738
	public void setAddressId(String addressId) {
739
		this.addressId = addressId;
740
	}
741
 
742
	public String getAddressId() {
743
		return addressId;
744
	}
745
 
746
	public void setReturnTransaction(ReturnTransaction returnTransaction) {
747
		this.returnTransaction = returnTransaction;
748
	}
749
 
750
	public ReturnTransaction getReturnTransaction() {
751
		return returnTransaction;
752
	}
753
 
754
	public void setNewReturnTransactionStatus(String newReturnTransactionStatus) {
755
		this.newReturnTransactionStatus = newReturnTransactionStatus;
756
	}
757
 
758
	public String getNewReturnTransactionStatus() {
759
		return newReturnTransactionStatus;
760
	}
761
 
762
	public void setReturnTransactionId(String returnTransactionId) {
763
		this.returnTransactionId = returnTransactionId;
764
	}
765
 
766
	public String getReturnTransactionId() {
767
		return returnTransactionId;
768
	}
769
 
770
	public String getReturnOrderId() {
771
		return returnOrderId;
772
	}
773
 
774
	public void setReturnOrderId(String returnOrderId) {
775
		this.returnOrderId = returnOrderId;
776
	}
777
 
778
	public void setReturnOrderInfo(ReturnOrderInfo returnOrderInfo) {
779
		this.returnOrderInfo = returnOrderInfo;
780
	}
781
 
782
	public ReturnOrderInfo getReturnOrderInfo() {
783
		return returnOrderInfo;
784
	}
785
 
786
	public static void main(String[] args){
787
		ReturnTransactionsController r = new ReturnTransactionsController();
788
		System.out.println(r.getForwardStatusForStatus(ReturnTransactionStatus.REJECTED));
789
		System.out.println(r.getForwardStatusForStatus(ReturnTransactionStatus.INPROCESS));
790
	}
791
 
792
	public void setReturnOrderInfoList(List<ReturnOrderInfo> returnOrderInfoList) {
793
		this.returnOrderInfoList = returnOrderInfoList;
794
	}
795
 
796
	public List<ReturnOrderInfo> getReturnOrderInfoList() {
797
		return returnOrderInfoList;
798
	}
799
 
800
	public void setReturnOrderIdsForPickUp(String returnOrderIdsForPickUp) {
801
		this.returnOrderIdsForPickUp = returnOrderIdsForPickUp;
802
	}
803
 
804
	public String getReturnOrderIdsForPickUp() {
805
		return returnOrderIdsForPickUp;
806
	}
807
 
808
	public void setPickupRequestId(String pickupRequestId) {
809
		this.pickupRequestId = pickupRequestId;
810
	}
811
 
812
	public String getPickupRequestId() {
813
		return pickupRequestId;
814
	}
815
 
816
	public void setReturnPickupRequest(ReturnPickupRequest returnPickupRequest) {
817
		this.returnPickupRequest = returnPickupRequest;
818
	}
819
 
820
	public ReturnPickupRequest getReturnPickupRequest() {
821
		return returnPickupRequest;
822
	}
823
 
824
	public Map<Long, String> getAvailableLogisticsPartner(){
825
		return providerNameMap;
826
	}
827
 
828
	public String getLogisticProviderName(long providerId){
829
		return providerNameMap.get(providerId);
830
	}
831
 
832
	public String getPickupRequestNo() {
833
		return pickupRequestNo;
834
	}
835
 
836
	public void setPickupRequestNo(String pickupRequestNo) {
837
		this.pickupRequestNo = pickupRequestNo;
838
	}
839
 
840
	public String getLogisticProviderId() {
841
		return logisticProviderId;
842
	}
843
 
844
	public void setLogisticProviderId(String logisticProviderId) {
845
		this.logisticProviderId = logisticProviderId;
846
	}
847
 
848
	public String getPickupStatus() {
849
		return pickupStatus;
850
	}
851
 
852
	public void setPickupStatus(String pickupStatus) {
853
		this.pickupStatus = pickupStatus;
854
	}
855
 
856
	public String getPromised_pickup_timestamp() {
857
		return promised_pickup_timestamp;
858
	}
859
 
860
	public void setPromised_pickup_timestamp(String promised_pickup_timestamp) {
861
		this.promised_pickup_timestamp = promised_pickup_timestamp;
862
	}
863
 
864
	public String getPickedUpAt() {
865
		return pickedUpAt;
866
	}
867
 
868
	public void setPickedUpAt(String pickedUpAt) {
869
		this.pickedUpAt = pickedUpAt;
870
	}
871
 
872
	public void setReturnTransactions(List<ReturnTransaction> returnTransactions) {
873
		this.returnTransactions = returnTransactions;
874
	}
875
 
876
	public List<ReturnTransaction> getReturnTransactions() {
877
		return returnTransactions;
878
	}
879
 
880
	public String getReceivedQty() {
881
		return receivedQty;
882
	}
883
 
884
	public void setReceivedQty(String receivedQty) {
885
		this.receivedQty = receivedQty;
886
	}
887
 
888
	public String getReceivedCondition() {
889
		return receivedCondition;
890
	}
891
 
892
	public void setReceivedCondition(String receivedCondition) {
893
		this.receivedCondition = receivedCondition;
894
	}
895
 
896
	public String[] getSerialNumbers() {
897
		return serialNumbers;
898
	}
899
 
900
	public void setSerialNumbers(String[] serialNumbers) {
901
		this.serialNumbers = serialNumbers;
902
	}
903
 
904
	public String getScanFreebie() {
905
		return scanFreebie;
906
	}
907
 
908
	public void setScanFreebie(String scanFreebie) {
909
		this.scanFreebie = scanFreebie;
910
	}
911
 
912
	public String getProductUsable() {
913
		return productUsable;
914
	}
915
 
916
	public void setProductUsable(String productUsable) {
917
		this.productUsable = productUsable;
918
	}
919
 
920
	public void setSplitOrderQuantity(String splitOrderQuantity) {
921
		this.splitOrderQuantity = splitOrderQuantity;
922
	}
923
 
924
	public String getSplitOrderQuantity() {
925
		return splitOrderQuantity;
926
	}
927
 
928
	public void setRefundType(String refundType) {
929
		this.refundType = refundType;
930
	}
931
 
932
	public String getRefundType() {
933
		return refundType;
934
	}
935
 
936
	public void setRefundAmount(String refundAmount) {
937
		this.refundAmount = refundAmount;
938
	}
939
 
940
	public String getRefundAmount() {
941
		return refundAmount;
942
	}
943
 
944
	public void setRefundReason(String refundReason) {
945
		this.refundReason = refundReason;
946
	}
947
 
948
	public String getRefundReason() {
949
		return refundReason;
950
	}
951
 
952
	public void setOrder(Order order) {
953
		this.order = order;
954
	}
955
 
956
	public Order getOrder() {
957
		return order;
958
	}
959
 
960
	public String getRefundDescription() {
961
		return refundDescription;
962
	}
963
 
964
	public void setRefundDescription(String refundDescription) {
965
		this.refundDescription = refundDescription;
966
	}
967
 
968
	public String getChequeDetails() {
969
		return chequeDetails;
970
	}
971
 
972
	public void setChequeDetails(String chequeDetails) {
973
		this.chequeDetails = chequeDetails;
974
	}
20991 kshitij.so 975
 
20110 kshitij.so 976
	public String getShippingType() {
977
		return shippingType;
978
	}
979
 
980
	public void setShippingType(String shippingType) {
981
		this.shippingType = shippingType;
982
	}
983
 
984
	public String getCouponDetails() {
985
		return couponDetails;
986
	}
987
 
988
	public void setCouponDetails(String couponDetails) {
989
		this.couponDetails = couponDetails;
990
	}
991
 
992
}