Subversion Repositories SmartDukaan

Rev

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