Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
7410 amar.kumar 1
package in.shop2020.inventory.controllers;
2
 
3
import in.shop2020.inventory.controllers.PurchaseController.ScanRecordType;
4
import in.shop2020.model.v1.catalog.CatalogService;
5
import in.shop2020.model.v1.catalog.CatalogServiceException;
6
import in.shop2020.model.v1.catalog.Item;
7
import in.shop2020.model.v1.catalog.ItemType;
8
import in.shop2020.model.v1.inventory.InventoryServiceException;
9
import in.shop2020.model.v1.inventory.Vendor;
10
import in.shop2020.model.v1.inventory.InventoryService.Client;
11
import in.shop2020.model.v1.inventory.Warehouse;
12
import in.shop2020.model.v1.inventory.WarehouseType;
13
import in.shop2020.model.v1.order.LineItem;
14
import in.shop2020.purchase.PurchaseReturn;
15
import in.shop2020.purchase.PurchaseServiceException;
16
import in.shop2020.thrift.clients.CatalogClient;
17
import in.shop2020.thrift.clients.InventoryClient;
18
import in.shop2020.thrift.clients.PurchaseClient;
19
import in.shop2020.thrift.clients.WarehouseClient;
20
import in.shop2020.warehouse.InventoryItem;
21
import in.shop2020.warehouse.Scan;
22
import in.shop2020.warehouse.ScanType;
23
import in.shop2020.warehouse.TransferLot;
24
import in.shop2020.warehouse.WarehouseService;
25
import in.shop2020.warehouse.WarehouseServiceException;
26
 
27
import java.text.DateFormat;
28
import java.text.ParseException;
29
import java.text.SimpleDateFormat;
30
import java.util.Calendar;
31
import java.util.HashMap;
32
import java.util.Hashtable;
33
import java.util.List;
34
import java.util.Map;
35
import java.util.Map.Entry;
36
import java.util.Set;
37
import java.util.ArrayList;
38
 
39
import org.apache.thrift.TException;
40
import org.apache.thrift.transport.TTransportException;
41
import org.slf4j.Logger;
42
import org.slf4j.LoggerFactory;
43
 
44
public class TransferLotController extends BaseController{
45
 
46
	/**
47
	 * 
48
	 */
49
	private static final long serialVersionUID = 3052114881399915348L;
50
 
51
	private Long id;
52
	private TransferLot transferLot;
53
	private List<TransferLot>transferLots;
54
	private String remoteTransferRefNumber;
55
	private String fromDate;
56
	private String toDate;
57
	private String errorMessage = "";
58
	private Calendar transferLotFromDate;
59
	private Calendar transferLotToDate;
60
	private Long originWarehouseId;
61
	private List<LineItem> lineItems;
62
	private Long destinationWarehouseId;
63
 
64
	private String output;
65
	private static Map<Long, Warehouse> warehouseMap;
66
 
67
	private static SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
68
 
69
    private static Logger logger = LoggerFactory.getLogger(TransferLotController.class);
70
 
71
    static {
72
		warehouseMap = new HashMap<Long, Warehouse>();
73
		InventoryClient inventoryServiceClient;
74
		try {
75
			inventoryServiceClient = new InventoryClient();
76
	        Client inventoryClient = inventoryServiceClient.getClient();
77
	        List<Warehouse> warehouses;
78
			warehouses = inventoryClient.getAllWarehouses(true);
79
	        for(Warehouse warehouse : warehouses){
80
	        	warehouseMap.put(warehouse.getId(), warehouse);
81
	        }
82
		} catch (TTransportException e) {
83
			logger.error("Error in populating warehouse map", e);
84
		} catch (TException e) {
85
			logger.error("Error in populating warehouse map", e);
86
		} catch (InventoryServiceException isex) {
87
			logger.error("Error in populating warehouse map", isex);
88
		}
89
	}
90
 
91
	public String index(){
92
		if(warehouseMap==null||warehouseMap.size()<1){
7448 amar.kumar 93
			fetchWarehouseMap();
7410 amar.kumar 94
		}
95
		try{
96
			WarehouseService.Client warehouseClient = new WarehouseClient().getClient();
97
			transferLotFromDate = Calendar.getInstance();
98
			transferLotToDate = Calendar.getInstance();
99
			if(fromDate==null) {
100
				transferLotFromDate.add(Calendar.MONTH, -1);
101
			} else {
102
				transferLotFromDate.setTime(formatter.parse(fromDate));
103
				if(toDate!=null) {
104
					transferLotToDate.setTime(formatter.parse(toDate));
105
				}
106
			}
107
			transferLots = warehouseClient.getTransferLotsByDate(transferLotFromDate.getTimeInMillis(), transferLotToDate.getTimeInMillis());
108
		} catch(TException e){
109
			logger.error("Error in getting transfer lots", e);
110
		} catch(ParseException pex) {
111
			logger.error("Error in parsing time", pex);
112
		} catch(WarehouseServiceException wsex) {
113
			logger.error("Error in getting transfer lots", wsex);
114
		}
115
		return INDEX;
116
	}
117
 
7448 amar.kumar 118
    private void fetchWarehouseMap() {
119
    	warehouseMap = new HashMap<Long, Warehouse>();
120
		InventoryClient inventoryServiceClient;
121
		try {
122
			inventoryServiceClient = new InventoryClient();
123
	        Client inventoryClient = inventoryServiceClient.getClient();
124
	        List<Warehouse> warehouses;
125
			warehouses = inventoryClient.getAllWarehouses(true);
126
	        for(Warehouse warehouse : warehouses){
127
	        	warehouseMap.put(warehouse.getId(), warehouse);
128
	        }
129
		} catch (TTransportException e) {
130
			logger.error("Error in populating warehouse map", e);
131
		} catch (TException e) {
132
			logger.error("Error in populating warehouse map", e);
133
		} catch (InventoryServiceException isex) {
134
			logger.error("Error in populating warehouse map", isex);
135
		}
136
	}
137
 
138
	public String create() {
7410 amar.kumar 139
    	originWarehouseId = Long.parseLong(request.getParameter("originWarehouseId"));
140
    	destinationWarehouseId = Long.parseLong(request.getParameter("destinationWarehouseId"));
141
    	try {
142
	    	WarehouseService.Client warehouseClient = new WarehouseClient().getClient();
143
	        id = warehouseClient.createTransferLot(originWarehouseId, destinationWarehouseId);
144
    	} catch (TException tex) {
145
    		logger.error("Error in creating transferlot between warehouseId " + originWarehouseId + " and " + destinationWarehouseId, tex);
146
    		errorMessage = "Error in creating transferlot between warehouseId " + originWarehouseId + " and " + destinationWarehouseId;
147
    	} catch (WarehouseServiceException wex) {
148
    		logger.error("Error in creating transferlot between warehouseId " + originWarehouseId + " and " + destinationWarehouseId, wex);
149
    		errorMessage = "Error in creating transferlot between warehouseId " + originWarehouseId + " and " + destinationWarehouseId;
150
    	}
151
        return show();
152
    }
153
 
154
	public String show(){
155
		resetLineItems();
156
		return SHOW;
157
	}
158
	public String update() {
159
		try {
160
			if(!areValidScans()){
161
				errorMessage = "Invalid Scans";
162
				return show();
163
			}
164
			if(id == null || id==0) {
165
	            	errorMessage = "No transferLot-Id selected for Transfer";
166
	        		return "new";
167
	        }
168
			List<InventoryItem> inventoryItems = new ArrayList<InventoryItem>();
169
			CatalogService.Client catalogClient = new CatalogClient().getClient();
170
			for (LineItem lineItem : lineItems) {
171
                if (lineItem.getItem_id() == 0) {
172
                    continue;
173
                }
174
                InventoryItem inventoryItem = new InventoryItem();
175
                inventoryItem.setItemId(lineItem.getItem_id());
176
                inventoryItem.setCurrentQuantity(new Double(lineItem.getQuantity()).longValue());
177
                inventoryItem.setItemNumber(lineItem.getItem_number());
178
                if(catalogClient.getItem(lineItem.getItem_id()).getType()==ItemType.SERIALIZED) {
179
                	inventoryItem.setSerialNumber(lineItem.getSerial_number());
180
                }
181
                inventoryItems.add(inventoryItem);
182
            }
183
			WarehouseService.Client warehouseClient = new WarehouseClient().getClient();
7448 amar.kumar 184
			warehouseClient.scanForTransferOut(inventoryItems, ScanType.WAREHOUSE_TRANSFER_OUT, id);
7410 amar.kumar 185
		} catch (TTransportException e) {
186
            errorMessage = "Error while establishing connection to the warehouse server";
187
            logger.error(errorMessage, e);
188
        } catch (WarehouseServiceException e) {
189
        	errorMessage = e.getMessage();
190
            logger.error(errorMessage, e);
191
        } catch (TException e) {
192
        	errorMessage = "Error while scanning in the item";
193
            logger.error(errorMessage, e);
194
        } catch (CatalogServiceException csex) {
195
        	errorMessage = "Error while getting the serialized details of item";
196
            logger.error(errorMessage, csex);
197
        }
198
        return show();
199
	}
200
 
201
	public String editNew(){
202
		return "new";
203
	}
204
 
205
	private boolean areValidScans() throws NumberFormatException, TException {
206
        boolean areValidScans = true;
207
        return areValidScans;
208
	}
209
 
210
	private void resetLineItems() {
211
        lineItems = new ArrayList<LineItem>();
212
 
213
        for (int i = 0; i < 11; i++) {
214
            LineItem lineItem = new LineItem();
215
            lineItem.setId(i);
216
            lineItem.setExtra_info("");
217
            lineItem.setSerial_number("");
218
            lineItem.setItem_number("");
219
            lineItem.setQuantity(1);
220
            lineItem.setItem_id(-1);
221
            lineItems.add(lineItem);
222
        }
223
    }
224
 
225
	public String getTransferLotItems() {
226
		try {
227
			WarehouseService.Client warehouseClient = new WarehouseClient().getClient();
228
			Map<Long, Long> transferLotItems = warehouseClient.getItemsInTransferLot(id);
229
			CatalogService.Client catalogClient = new CatalogClient().getClient();
230
			String transferLotItemDiv = "<div id = 'transfer-lot-item-list-div' align='center'><table id = 'transfer-lot-item-list-table'><tr><th>Item</th><th>Quantity</th></tr>";
231
			for(Long itemId : transferLotItems.keySet()){
232
				Item item = catalogClient.getItem(itemId);
233
				transferLotItemDiv = transferLotItemDiv + "<tr><td>" + item.getBrand() + " " + item.getModelName() + " " + item.getModelNumber() + " " + item.getColor();
234
				transferLotItemDiv = transferLotItemDiv  + "</td><td>" + transferLotItems.get(itemId) +"</td></tr>";
235
			}
236
			transferLotItemDiv = transferLotItemDiv + "</table></div>";
237
			setOutput(transferLotItemDiv);
238
		} catch (TException tex) {
239
			logger.error("Error in marking transfer lot as received",tex);
240
		} catch (CatalogServiceException csex) {
241
			logger.error("Error in marking transfer lot as received",csex);
242
		}
243
		return OUTPUT;
244
	}
245
 
246
	public String markTransferLotAsReceived() throws Exception {
247
		try{
248
			WarehouseService.Client warehouseClient = new WarehouseClient().getClient();
249
			warehouseClient.markItemsAsReceivedForTransferLot(id);
250
			warehouseClient.markTransferLotAsReceived(id, remoteTransferRefNumber);
251
		} catch(TException e){
252
			logger.error("Error in marking transfer lot as received",e);
253
			throw new Exception("Error in marking transfer lot as received");
254
		} catch(WarehouseServiceException wsex) {
255
			logger.error("Error in marking transfer lot as received",wsex);
256
			throw new Exception("Error in marking transfer lot as received");
257
		}
258
		return INDEX;
259
	}
260
 
261
	public String getWarehouseName(Long warehouseId){
262
		return warehouseMap.get(warehouseId).getDisplayName();
263
	}
264
 
265
	public boolean isTransferReceivable(TransferLot transferLot) {
266
		if(warehouseMap.get(transferLot.getDestinationWarehouseId()).getWarehouseType()==WarehouseType.OURS_THIRDPARTY||
267
				warehouseMap.get(transferLot.getDestinationWarehouseId()).getWarehouseType()==WarehouseType.THIRD_PARTY) {
268
			return false;
269
		} else {
270
			return true;
271
		}
272
	}
273
 
274
 
275
 
276
 
277
	public String getDateTime(long milliseconds) {
278
        Calendar cal = Calendar.getInstance();
279
        cal.setTimeInMillis(milliseconds);
280
        return formatter.format(cal.getTime());
281
    }
282
 
283
	public static void setWarehouseMap(Map<Long, Warehouse> warehouseMap) {
284
		TransferLotController.warehouseMap = warehouseMap;
285
	}
286
 
287
	public TransferLot getTransferLot() {
288
		return transferLot;
289
	}
290
 
291
	public void setTransferLot(TransferLot transferLot) {
292
		this.transferLot = transferLot;
293
	}
294
 
295
	public List<TransferLot> getTransferLots() {
296
		return transferLots;
297
	}
298
 
299
	public void setTransferLots(List<TransferLot> transferLots) {
300
		this.transferLots = transferLots;
301
	}
302
 
303
	public String getRemoteTransferRefNumber() {
304
		return remoteTransferRefNumber;
305
	}
306
 
307
	public void setRemoteTransferRefNumber(String remoteTransferRefNumber) {
308
		this.remoteTransferRefNumber = remoteTransferRefNumber;
309
	}
310
 
311
	public Long getId() {
312
		return id;
313
	}
314
 
315
	public void setId(Long id) {
316
		this.id = id;
317
	}
318
 
319
	public String getOutput() {
320
		return output;
321
	}
322
 
323
	public void setOutput(String output) {
324
		this.output = output;
325
	}
326
 
327
	public Long getOriginWarehouseId() {
328
		return originWarehouseId;
329
	}
330
 
331
	public void setOriginWarehouseId(Long originWarehouseId) {
332
		this.originWarehouseId = originWarehouseId;
333
	}
334
 
335
	public Long getDestinationWarehouseId() {
336
		return destinationWarehouseId;
337
	}
338
 
339
	public void setDestinationWarehouseId(Long destinationWarehouseId) {
340
		this.destinationWarehouseId = destinationWarehouseId;
341
	}
342
 
343
	public String getErrorMessage() {
344
		return errorMessage;
345
	}
346
 
347
	public void setErrorMsg(String errorMessage) {
348
		this.errorMessage = errorMessage;
349
	}
350
 
351
	public List<LineItem> getLineItems() {
352
		return lineItems;
353
	}
354
 
355
	public void setLineItems(List<LineItem> lineItems) {
356
		this.lineItems = lineItems;
357
	}
358
 
359
 
360
 
361
}