Subversion Repositories SmartDukaan

Rev

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