Subversion Repositories SmartDukaan

Rev

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