Subversion Repositories SmartDukaan

Rev

Rev 24063 | Rev 24088 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 24063 Rev 24083
Line 44... Line 44...
44
import com.spice.profitmandi.common.model.ClosingStockOnDate;
44
import com.spice.profitmandi.common.model.ClosingStockOnDate;
45
import com.spice.profitmandi.common.model.GrnPendingDataModel;
45
import com.spice.profitmandi.common.model.GrnPendingDataModel;
46
import com.spice.profitmandi.common.model.ImeiDropSummaryModel;
46
import com.spice.profitmandi.common.model.ImeiDropSummaryModel;
47
import com.spice.profitmandi.common.model.ItemDescriptionModel;
47
import com.spice.profitmandi.common.model.ItemDescriptionModel;
48
import com.spice.profitmandi.common.model.PartnerImeiNotSold;
48
import com.spice.profitmandi.common.model.PartnerImeiNotSold;
-
 
49
import com.spice.profitmandi.common.model.PriceDropImeisModel;
49
import com.spice.profitmandi.common.model.PriceDropModel;
50
import com.spice.profitmandi.common.model.PriceDropModel;
50
import com.spice.profitmandi.common.model.PriceDropProcessModel;
51
import com.spice.profitmandi.common.model.PriceDropProcessModel;
51
import com.spice.profitmandi.common.model.ReporticoResponseModel;
52
import com.spice.profitmandi.common.model.ReporticoResponseModel;
52
import com.spice.profitmandi.common.services.ReporticoService;
53
import com.spice.profitmandi.common.services.ReporticoService;
53
import com.spice.profitmandi.common.util.FileUtil;
54
import com.spice.profitmandi.common.util.FileUtil;
Line 56... Line 57...
56
import com.spice.profitmandi.dao.entity.catalog.TagListing;
57
import com.spice.profitmandi.dao.entity.catalog.TagListing;
57
import com.spice.profitmandi.dao.entity.fofo.InventoryItem;
58
import com.spice.profitmandi.dao.entity.fofo.InventoryItem;
58
import com.spice.profitmandi.dao.entity.inventory.VendorItemPricing;
59
import com.spice.profitmandi.dao.entity.inventory.VendorItemPricing;
59
import com.spice.profitmandi.dao.entity.transaction.LineItemImei;
60
import com.spice.profitmandi.dao.entity.transaction.LineItemImei;
60
import com.spice.profitmandi.dao.entity.transaction.PriceDrop;
61
import com.spice.profitmandi.dao.entity.transaction.PriceDrop;
-
 
62
import com.spice.profitmandi.dao.entity.transaction.PriceDropIMEI;
-
 
63
import com.spice.profitmandi.dao.enumuration.transaction.PriceDropImeiStatus;
61
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
64
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
62
import com.spice.profitmandi.dao.repository.catalog.TagListingRepository;
65
import com.spice.profitmandi.dao.repository.catalog.TagListingRepository;
63
import com.spice.profitmandi.dao.repository.fofo.InventoryItemRepository;
66
import com.spice.profitmandi.dao.repository.fofo.InventoryItemRepository;
64
import com.spice.profitmandi.dao.repository.fofo.SchemeInOutRepository;
67
import com.spice.profitmandi.dao.repository.fofo.SchemeInOutRepository;
65
import com.spice.profitmandi.dao.repository.inventory.VendorItemPricingRepository;
68
import com.spice.profitmandi.dao.repository.inventory.VendorItemPricingRepository;
66
import com.spice.profitmandi.dao.repository.transaction.LineItemImeisRepository;
69
import com.spice.profitmandi.dao.repository.transaction.LineItemImeisRepository;
-
 
70
import com.spice.profitmandi.dao.repository.transaction.PriceDropIMEIRepository;
67
import com.spice.profitmandi.dao.repository.transaction.PriceDropRepository;
71
import com.spice.profitmandi.dao.repository.transaction.PriceDropRepository;
68
import com.spice.profitmandi.service.inventory.InventoryService;
72
import com.spice.profitmandi.service.inventory.InventoryService;
69
import com.spice.profitmandi.service.pricing.PriceDropService;
73
import com.spice.profitmandi.service.pricing.PriceDropService;
70
import com.spice.profitmandi.service.scheme.SchemeService;
74
import com.spice.profitmandi.service.scheme.SchemeService;
71
import com.spice.profitmandi.service.transaction.TransactionService;
75
import com.spice.profitmandi.service.transaction.TransactionService;
Line 96... Line 100...
96
	@Autowired
100
	@Autowired
97
	private MVCResponseSender mvcResponseSender;
101
	private MVCResponseSender mvcResponseSender;
98
 
102
 
99
	@Autowired
103
	@Autowired
100
	private PriceDropService priceDropService;
104
	private PriceDropService priceDropService;
101
	
105
 
102
	@Autowired
106
	@Autowired
103
	private InventoryItemRepository inventoryItemRepository;
107
	private InventoryItemRepository inventoryItemRepository;
104
	
108
 
105
	@Autowired
109
	@Autowired
106
	private WalletService walletService;
110
	private WalletService walletService;
107
 
111
 
108
	@Autowired
112
	@Autowired
109
	private TagListingRepository tagListingRepository;
113
	private TagListingRepository tagListingRepository;
110
 
114
 
111
	@Autowired
115
	@Autowired
112
	private TransactionService transactionService;
116
	private TransactionService transactionService;
113
 
117
 
114
	@Autowired
118
	@Autowired
-
 
119
	private PriceDropIMEIRepository priceDropIMEIRepository;
-
 
120
 
-
 
121
	@Autowired
115
	@Qualifier("catalogItemRepository")
122
	@Qualifier("catalogItemRepository")
116
	private ItemRepository itemRepository;
123
	private ItemRepository itemRepository;
117
 
124
 
118
	@Autowired
125
	@Autowired
119
	private SchemeService schemeService;
126
	private SchemeService schemeService;
120
	
127
 
121
	@Autowired
128
	@Autowired
122
	private SchemeInOutRepository schemeInOutRepository;
129
	private SchemeInOutRepository schemeInOutRepository;
123
 
130
 
124
	@Autowired
131
	@Autowired
125
	ReporticoService reporticoService;
132
	ReporticoService reporticoService;
126
	
133
 
127
	@Autowired
134
	@Autowired
128
	LineItemImeisRepository lineItemImeisRepository;
135
	LineItemImeisRepository lineItemImeisRepository;
129
 
136
 
130
	@RequestMapping(value = "/getItemDescription", method = RequestMethod.GET)
137
	@RequestMapping(value = "/getItemDescription", method = RequestMethod.GET)
131
	public String getItemDescription(HttpServletRequest request, Model model) throws Throwable {
138
	public String getItemDescription(HttpServletRequest request, Model model) throws Throwable {
Line 133... Line 140...
133
		List<TagListing> tagListings = tagListingRepository.selectAll(false);
140
		List<TagListing> tagListings = tagListingRepository.selectAll(false);
134
		Map<Integer, TagListing> tagListingMap = new HashMap<>();
141
		Map<Integer, TagListing> tagListingMap = new HashMap<>();
135
		Set<ItemDescriptionModel> customItems = new HashSet<>();
142
		Set<ItemDescriptionModel> customItems = new HashSet<>();
136
		List<ItemDescriptionModel> newCustomItems = new ArrayList<>();
143
		List<ItemDescriptionModel> newCustomItems = new ArrayList<>();
137
		List<Item> items = itemRepository.selectRecentItems(100);
144
		List<Item> items = itemRepository.selectRecentItems(100);
138
		for(Item item: items) {
145
		for (Item item : items) {
139
			ItemDescriptionModel itemDescriptionModel = new ItemDescriptionModel();
146
			ItemDescriptionModel itemDescriptionModel = new ItemDescriptionModel();
140
			itemDescriptionModel.setItemId(item.getId());
147
			itemDescriptionModel.setItemId(item.getId());
141
			itemDescriptionModel.setItemDescription(item.getItemDescription() + "(" + item.getId() + ")");
148
			itemDescriptionModel.setItemDescription(item.getItemDescription() + "(" + item.getId() + ")");
142
			newCustomItems.add(itemDescriptionModel);
149
			newCustomItems.add(itemDescriptionModel);
143
		}
150
		}
144
		
151
 
145
		Map<Integer, String> catalogDescription = new HashMap<>();
152
		Map<Integer, String> catalogDescription = new HashMap<>();
146
		for (TagListing tagListing : tagListings) {
153
		for (TagListing tagListing : tagListings) {
147
			Item item = itemRepository.selectById(tagListing.getItemId());
154
			Item item = itemRepository.selectById(tagListing.getItemId());
148
			tagListing.setItemDescription(item.getItemDescription());
155
			tagListing.setItemDescription(item.getItemDescription());
149
			tagListingMap.put(tagListing.getItemId(), tagListing);
156
			tagListingMap.put(tagListing.getItemId(), tagListing);
Line 152... Line 159...
152
			itemDescriptionModel
159
			itemDescriptionModel
153
					.setItemDescription(tagListing.getItemDescription() + "(" + tagListing.getItemId() + ")");
160
					.setItemDescription(tagListing.getItemDescription() + "(" + tagListing.getItemId() + ")");
154
			customItems.add(itemDescriptionModel);
161
			customItems.add(itemDescriptionModel);
155
			catalogDescription.put(item.getCatalogItemId(), item.getItemDescriptionNoColor());
162
			catalogDescription.put(item.getCatalogItemId(), item.getItemDescriptionNoColor());
156
		}
163
		}
157
		
164
 
158
		newCustomItems.addAll(customItems);
165
		newCustomItems.addAll(customItems);
159
 
166
 
160
		List<PriceDrop> priceDrops = priceDropRepository.selectAll();
167
		List<PriceDrop> priceDrops = priceDropRepository.selectAll();
161
		model.addAttribute("tagListingMap", tagListingMap);
168
		model.addAttribute("tagListingMap", tagListingMap);
162
		model.addAttribute("customItems", new JSONArray(customItems).toString());
169
		model.addAttribute("customItems", new JSONArray(customItems).toString());
Line 164... Line 171...
164
		model.addAttribute("priceDrops", priceDrops);
171
		model.addAttribute("priceDrops", priceDrops);
165
		model.addAttribute("catalogDescription", catalogDescription);
172
		model.addAttribute("catalogDescription", catalogDescription);
166
		return "price-drop";
173
		return "price-drop";
167
 
174
 
168
	}
175
	}
169
	
176
 
170
	@RequestMapping(value = "/item-pricing/{itemId}", method = RequestMethod.GET)
177
	@RequestMapping(value = "/item-pricing/{itemId}", method = RequestMethod.GET)
171
	public String getItemPricing(HttpServletRequest request, Model model, @PathVariable int itemId) throws Throwable {
178
	public String getItemPricing(HttpServletRequest request, Model model, @PathVariable int itemId) throws Throwable {
172
		
179
 
173
		TagListing tagListing;
180
		TagListing tagListing;
174
		PriceDropModel pm = new PriceDropModel();
181
		PriceDropModel pm = new PriceDropModel();
175
		try {
182
		try {
176
			tagListing = tagListingRepository.selectByItemId(itemId);
183
			tagListing = tagListingRepository.selectByItemId(itemId);
177
			if(tagListing!=null) {
184
			if (tagListing != null) {
178
				pm.setMop(tagListing.getMop());
185
				pm.setMop(tagListing.getMop());
179
				pm.setDp(tagListing.getSellingPrice());
186
				pm.setDp(tagListing.getSellingPrice());
180
				pm.setMrp(tagListing.getMrp());
187
				pm.setMrp(tagListing.getMrp());
181
				List<VendorItemPricing> vips = vendorItemPricingRepository.selectAll(itemId);
188
				List<VendorItemPricing> vips = vendorItemPricingRepository.selectAll(itemId);
182
				if(vips.size() > 0) {
189
				if (vips.size() > 0) {
183
					VendorItemPricing vip = vips.get(0);
190
					VendorItemPricing vip = vips.get(0);
184
					pm.setNlc(vip.getNlc());
191
					pm.setNlc(vip.getNlc());
185
					pm.setTp(vip.getTp());
192
					pm.setTp(vip.getTp());
186
				} else {
193
				} else {
187
					throw new ProfitMandiBusinessException("Item Id", itemId, "Vendor item pricing does not exist");
194
					throw new ProfitMandiBusinessException("Item Id", itemId, "Vendor item pricing does not exist");
188
				}
195
				}
189
			}
196
			}
190
		} catch(Exception e) {
197
		} catch (Exception e) {
191
			LOGGER.info("Chose item that doesn't exist");
198
			LOGGER.info("Chose item that doesn't exist");
192
		}
199
		}
193
		model.addAttribute("response", mvcResponseSender.createResponseString(pm));
200
		model.addAttribute("response", mvcResponseSender.createResponseString(pm));
194
		return "response";
201
		return "response";
195
	}
202
	}
196
	
203
 
-
 
204
	/*
197
	/*@RequestMapping(value = "/price-drop/imes1/download")
205
	 * @RequestMapping(value = "/price-drop/imes1/download") public
198
	public ResponseEntity<ByteArrayResource> downloadPriceDropImeis1(HttpServletRequest request,
206
	 * ResponseEntity<ByteArrayResource> downloadPriceDropImeis1(HttpServletRequest
-
 
207
	 * request,
-
 
208
	 * 
199
			@RequestParam LocalDateTime affectedDate, @RequestParam int itemId) throws Exception {
209
	 * @RequestParam LocalDateTime affectedDate, @RequestParam int itemId) throws
200
		Item item = itemRepository.selectById(itemId);
210
	 * Exception { Item item = itemRepository.selectById(itemId);
-
 
211
	 * List<ImeiDropSummaryModel> imeiDropSummaryModelList =
201
		List<ImeiDropSummaryModel> imeiDropSummaryModelList = this.getAllSerialNumbersByAffectedDate(affectedDate, item.getCatalogItemId());
212
	 * this.getAllSerialNumbersByAffectedDate(affectedDate,
-
 
213
	 * item.getCatalogItemId()); List<String> imeis =
202
		List<String> imeis = imeiDropSummaryModelList.stream().map(x->x.getSerialNumber()).collect(Collectors.toList());
214
	 * imeiDropSummaryModelList.stream().map(x->x.getSerialNumber()).collect(
-
 
215
	 * Collectors.toList()); Map<String, ImeiDropSummaryModel> imeisDropMap =
203
		Map<String, ImeiDropSummaryModel> imeisDropMap = imeiDropSummaryModelList.stream().collect(Collectors.toMap(ImeiDropSummaryModel::getSerialNumber, x->x));
216
	 * imeiDropSummaryModelList.stream().collect(Collectors.toMap(
-
 
217
	 * ImeiDropSummaryModel::getSerialNumber, x->x)); List<InventoryItem>
204
		List<InventoryItem> inventoryItems = inventoryItemRepository.selectBySerialNumbers(new HashSet<>(imeis));
218
	 * inventoryItems = inventoryItemRepository.selectBySerialNumbers(new
-
 
219
	 * HashSet<>(imeis)); List<Integer> inventoryItemIds =
205
		List<Integer> inventoryItemIds = inventoryItems.stream().map(InventoryItem::getId).collect(Collectors.toList());
220
	 * inventoryItems.stream().map(InventoryItem::getId).collect(Collectors.toList()
-
 
221
	 * );
206
		
222
	 * 
-
 
223
	 * List<SchemeInOut> schemeInOuts =
207
		List<SchemeInOut> schemeInOuts = schemeInOutRepository.selectByInventoryItemIds(new HashSet<>(inventoryItemIds));
224
	 * schemeInOutRepository.selectByInventoryItemIds(new
-
 
225
	 * HashSet<>(inventoryItemIds));
208
		
226
	 * 
209
		Set<ItemQuantity> itemSchemes = new HashSet<>();
227
	 * Set<ItemQuantity> itemSchemes = new HashSet<>(); Map<ItemQuantity,
210
		Map<ItemQuantity, SchemeInOut> itemSchemeInOutMap = new HashMap<>(); 
228
	 * SchemeInOut> itemSchemeInOutMap = new HashMap<>(); for(SchemeInOut
211
		for(SchemeInOut schemeInOut : schemeInOuts) {
-
 
212
		}
-
 
213
		List<List<Object>> rows = new ArrayList<>();
229
	 * schemeInOut : schemeInOuts) { } List<List<Object>> rows = new ArrayList<>();
214
		for (ImeiDropSummaryModel imeiDropSummaryModel : imeiDropSummaryModelList) {
230
	 * for (ImeiDropSummaryModel imeiDropSummaryModel : imeiDropSummaryModelList) {
215
			List<Object> row = this.getRow(imeiDropSummaryModel);
231
	 * List<Object> row = this.getRow(imeiDropSummaryModel);
216
			
232
	 * 
217
			rows.add(this.getRow(imeiDropSummaryModel));
233
	 * rows.add(this.getRow(imeiDropSummaryModel)); }
218
		}
234
	 * 
219
		
-
 
220
		FileUtil.getCSVByteStream(Arrays.asList("IMEI Number", "Store Name", "Store Code", "Item ID", "Brand",
235
	 * FileUtil.getCSVByteStream(Arrays.asList("IMEI Number", "Store Name",
221
				"Model Name", "Model Number", "Color", "Last Scanned"), 
236
	 * "Store Code", "Item ID", "Brand", "Model Name", "Model Number", "Color",
222
				rows);
-
 
223
		final HttpHeaders headers = new HttpHeaders();
237
	 * "Last Scanned"), rows); final HttpHeaders headers = new HttpHeaders();
-
 
238
	 * headers.set("Content-Type",
224
		headers.set("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
239
	 * "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
225
		headers.set("Content-disposition", "inline; filename=imei-" + item.getItemDescriptionNoColor() + ".csv");
240
	 * headers.set("Content-disposition", "inline; filename=imei-" +
-
 
241
	 * item.getItemDescriptionNoColor() + ".csv"); return new
226
		return new ResponseEntity<ByteArrayResource>(null, headers, HttpStatus.OK);
242
	 * ResponseEntity<ByteArrayResource>(null, headers, HttpStatus.OK);
227
	
243
	 * 
-
 
244
	 * }
228
	}*/
245
	 */
229
	@RequestMapping(value = "/price-drop/imes/download")
246
	@RequestMapping(value = "/price-drop/imes/download")
230
	public ResponseEntity<ByteArrayResource> downloadPriceDropImeis(HttpServletRequest request,
247
	public ResponseEntity<ByteArrayResource> downloadPriceDropImeis(HttpServletRequest request,
231
			@RequestParam LocalDateTime affectedDate, @RequestParam int itemId) throws Exception {
248
			@RequestParam LocalDateTime affectedDate, @RequestParam int itemId) throws Exception {
232
		Item item = itemRepository.selectById(itemId);
249
		Item item = itemRepository.selectById(itemId);
233
		ByteArrayOutputStream baos = getByteArrayOutputStream(affectedDate, item.getCatalogItemId());
250
		ByteArrayOutputStream baos = getByteArrayOutputStream(affectedDate, item.getCatalogItemId());
Line 237... Line 254...
237
		byte[] byteArray = baos.toByteArray();
254
		byte[] byteArray = baos.toByteArray();
238
		headers.setContentLength(byteArray.length);
255
		headers.setContentLength(byteArray.length);
239
		return new ResponseEntity<ByteArrayResource>(new ByteArrayResource(byteArray), headers, HttpStatus.OK);
256
		return new ResponseEntity<ByteArrayResource>(new ByteArrayResource(byteArray), headers, HttpStatus.OK);
240
	}
257
	}
241
 
258
 
-
 
259
	@RequestMapping(value = "/price-drop/addPayout", method = RequestMethod.POST)
-
 
260
	public String updatePriceDrop(HttpServletRequest request, @RequestBody PriceDropProcessModel priceDropProcessModel,
-
 
261
			Model model) throws Exception {
-
 
262
		boolean response = false;
-
 
263
		PriceDrop priceDrop = priceDropRepository.selectById(priceDropProcessModel.getPriceDropId());
-
 
264
		if (priceDrop.getProcessTimestamp() == null) {
-
 
265
			priceDrop.setPartnerPayout(priceDropProcessModel.getPartnerPayout());
-
 
266
			priceDrop.setPriceDropIn(priceDropProcessModel.getPriceDropIn());
-
 
267
			// priceDrop.setProcessTimestamp(LocalDateTime.now());
-
 
268
			priceDropRepository.persist(priceDrop);
-
 
269
			response = true;
-
 
270
		}
-
 
271
		model.addAttribute("response", mvcResponseSender.createResponseString(response));
-
 
272
		return "response";
-
 
273
	}
-
 
274
 
-
 
275
	@RequestMapping(value = "/priceDropImeis/{priceDropId}", method = RequestMethod.GET)
-
 
276
	public String priceDropStatus(HttpServletRequest request, @PathVariable int priceDropId, Model model)
-
 
277
			throws Exception {
-
 
278
 
-
 
279
		PriceDropImeisModel priceDropImeisModel = new PriceDropImeisModel();
-
 
280
		List<String> pendingImeis = new ArrayList<>();
-
 
281
		List<String> approvedImeis = new ArrayList<>();
-
 
282
		List<String> rejectedImeis = new ArrayList<>();
-
 
283
		List<PriceDropIMEI> priceDropImeis = priceDropIMEIRepository.selectByPriceDropId(priceDropId);
-
 
284
		if (priceDropImeis.size() == 0) {
-
 
285
			PriceDrop priceDrop = priceDropRepository.selectById(priceDropId);
-
 
286
			List<ImeiDropSummaryModel> imeis = this.getAllSerialNumbersByAffectedDate(priceDrop.getAffectedOn(),
-
 
287
					priceDrop.getCatalogItemId());
-
 
288
			for (ImeiDropSummaryModel imei : imeis) {
-
 
289
				PriceDropIMEI priceDropIMEI = new PriceDropIMEI();
-
 
290
				priceDropIMEI.setImei(imei.getSerialNumber());
-
 
291
				priceDropIMEI.setPriceDropId(priceDropId);
-
 
292
				priceDropIMEI.setPartnerId(imei.getRetailerId());
-
 
293
				priceDropIMEIRepository.persist(priceDropIMEI);
-
 
294
			}
-
 
295
			priceDropImeis = priceDropIMEIRepository.selectByPriceDropId(priceDropId);
-
 
296
		}
-
 
297
 
-
 
298
		for (PriceDropIMEI priceDropIMEI : priceDropImeis) {
-
 
299
			if (priceDropIMEI.getStatus().equals(PriceDropImeiStatus.PENDING)) {
-
 
300
				pendingImeis.add(priceDropIMEI.getImei());
-
 
301
			} else if (priceDropIMEI.getStatus().equals(PriceDropImeiStatus.APPROVED)) {
-
 
302
				approvedImeis.add(priceDropIMEI.getImei());
-
 
303
			}
-
 
304
			if (priceDropIMEI.getStatus().equals(PriceDropImeiStatus.REJECTED)) {
-
 
305
				rejectedImeis.add(priceDropIMEI.getImei());
-
 
306
			}
-
 
307
		}
-
 
308
		priceDropImeisModel.setPendingImeis(pendingImeis);
-
 
309
		priceDropImeisModel.setPriceDropId(priceDropId);
-
 
310
		priceDropImeisModel.setApprovedImeis(approvedImeis);
-
 
311
		priceDropImeisModel.setRejectedImeis(rejectedImeis);
-
 
312
		model.addAttribute("response", mvcResponseSender.createResponseString(priceDropImeisModel));
-
 
313
		return "response";
-
 
314
	}
-
 
315
 
242
	@RequestMapping(value = "/processPriceDrop", method = RequestMethod.POST)
316
	@RequestMapping(value = "/processPriceDrop", method = RequestMethod.POST)
243
	public String processPriceDrop(HttpServletRequest request, @RequestBody PriceDropProcessModel priceDropProcess,
317
	public String processPriceDrop(HttpServletRequest request, @RequestBody PriceDropProcessModel priceDropProcess,
244
			Model model) throws Exception {
318
			Model model) throws Exception {
245
		PriceDrop priceDrop = priceDropRepository.selectById(priceDropProcess.getPriceDropId());
319
		PriceDrop priceDrop = priceDropRepository.selectById(priceDropProcess.getPriceDropId());
246
		boolean response = false;
320
		boolean response = false;
247
		if (priceDrop.getProcessTimestamp() == null) {
321
		if (priceDrop.getProcessTimestamp() == null) {
248
			priceDrop.setPartnerPayout(priceDropProcess.getPartnerPayout());
-
 
249
			priceDrop.setPriceDropIn(priceDropProcess.getPriceDropIn());
-
 
250
			priceDrop.setProcessTimestamp(LocalDateTime.now());
322
			priceDrop.setProcessTimestamp(LocalDateTime.now());
251
			priceDropRepository.persist(priceDrop);
323
			priceDropRepository.persist(priceDrop);
252
			Item item = itemRepository.selectAllByCatalogItemId(priceDrop.getCatalogItemId()).get(0);
-
 
253
			String description = item.getItemDescriptionNoColor();
-
 
254
			List<ImeiDropSummaryModel> imeiDropSummaryModels = this.getAllSerialNumbersByAffectedDate(priceDrop.getAffectedOn(),
-
 
255
					priceDrop.getCatalogItemId());
-
 
256
			
-
 
257
			
-
 
258
			if (imeiDropSummaryModels.size() > 0) {
-
 
259
				List<String> serialNumbers = imeiDropSummaryModels.stream().map(x->x.getSerialNumber()).collect(Collectors.toList());
-
 
260
				List<LineItemImei> lineItemImeis = lineItemImeisRepository.selectByIMEI(serialNumbers);
-
 
261
				Map<Integer, List<InventoryItem>> pendingPartnerInventoryMap = priceDropService.getInventoryForPriceDrop(lineItemImeis, priceDrop).
-
 
262
						stream().collect(Collectors.groupingBy(InventoryItem::getFofoId));
-
 
263
 
-
 
264
				for (Map.Entry<Integer, List<InventoryItem>> pendingPartnerInventory : pendingPartnerInventoryMap.entrySet()) {
-
 
265
					List<InventoryItem> fofoInventoryList = pendingPartnerInventory.getValue();
-
 
266
					int fofoId = pendingPartnerInventory.getKey();
-
 
267
					
-
 
268
					String reversalReason = MessageFormat.format(
-
 
269
							"Scheme  differential for Price Drop of Rs.{0} on {1}, on {3}. Total {2} item(s)",
-
 
270
							priceDrop.getAmount(), description, fofoInventoryList.size(),
-
 
271
							FormattingUtils.formatDate(priceDrop.getAffectedOn()));
-
 
272
					String aReason = MessageFormat.format(
-
 
273
							"Payout of Rs.{4} per unit for Price Drop of Rs.{0} on {1}, on {3}. Total {2} item(s)",
-
 
274
							priceDrop.getAmount(), description, fofoInventoryList.size(),
-
 
275
							FormattingUtils.formatDate(priceDrop.getAffectedOn()), priceDropProcess.getPartnerPayout());
-
 
276
					inventoryService.updatePriceDrop(fofoInventoryList, priceDrop.getAmount());
-
 
277
					if(item.getBrand().equals("Samsung")) {
-
 
278
						schemeService.reverseSchemes(fofoInventoryList, priceDropProcess.getPriceDropId(), reversalReason);
-
 
279
					}
-
 
280
					walletService.addAmountToWallet(fofoId, priceDrop.getId(), WalletReferenceType.PRICE_DROP, aReason,
-
 
281
							priceDrop.getPartnerPayout() * fofoInventoryList.size());
-
 
282
				}
-
 
283
 
-
 
284
			}
-
 
285
			response = true;
324
			response = true;
286
		}
325
		}
287
		model.addAttribute("response", mvcResponseSender.createResponseString(response));
326
		model.addAttribute("response", mvcResponseSender.createResponseString(response));
288
		return "response";
327
		return "response";
289
	}
328
	}
-
 
329
 
290
	@RequestMapping(value = "/updateMop", method = RequestMethod.POST)
330
	@RequestMapping(value = "/updateMop", method = RequestMethod.POST)
291
	public String addMop(HttpServletRequest request, Model model, @RequestBody PriceDropModel priceDropModel) throws Exception {
331
	public String addMop(HttpServletRequest request, Model model, @RequestBody PriceDropModel priceDropModel)
-
 
332
			throws Exception {
292
		boolean response = false;
333
		boolean response = false;
293
		priceDropModel.setAllColors(true);
334
		priceDropModel.setAllColors(true);
294
		TagListing tagListing = tagListingRepository.selectByItemId(priceDropModel.getItemId());
335
		TagListing tagListing = tagListingRepository.selectByItemId(priceDropModel.getItemId());
295
		float newDp = tagListing.getSellingPrice() - priceDropModel.getPd();
336
		float newDp = tagListing.getSellingPrice() - priceDropModel.getPd();
296
		List<Item> allItems = null;
337
		List<Item> allItems = null;
Line 314... Line 355...
314
				vendorItemPricingRepository.persist(vip);
355
				vendorItemPricingRepository.persist(vip);
315
			}
356
			}
316
			transactionService.updatePriceDrop(item.getId(), newDp);
357
			transactionService.updatePriceDrop(item.getId(), newDp);
317
		}
358
		}
318
		PriceDrop priceDrop = new PriceDrop();
359
		PriceDrop priceDrop = new PriceDrop();
319
		priceDrop.setAffectedOn(LocalDateTime.of(LocalDate.now(),LocalTime.MIDNIGHT));
360
		priceDrop.setAffectedOn(LocalDateTime.of(LocalDate.now(), LocalTime.MIDNIGHT));
320
		priceDrop.setOldDp(tagListing.getSellingPrice());
361
		priceDrop.setOldDp(tagListing.getSellingPrice());
321
		priceDrop.setAmount(priceDropModel.getPd());
362
		priceDrop.setAmount(priceDropModel.getPd());
322
		priceDrop.setNewDp(tagListing.getSellingPrice());
363
		priceDrop.setNewDp(tagListing.getSellingPrice());
323
		priceDrop.setNlc(priceDropModel.getNlc());
364
		priceDrop.setNlc(priceDropModel.getNlc());
324
		priceDrop.setTp(priceDropModel.getTp());
365
		priceDrop.setTp(priceDropModel.getTp());
Line 404... Line 445...
404
		headers.setContentLength(byteArray.length);
445
		headers.setContentLength(byteArray.length);
405
		return new ResponseEntity<ByteArrayResource>(new ByteArrayResource(byteArray), headers, HttpStatus.OK);
446
		return new ResponseEntity<ByteArrayResource>(new ByteArrayResource(byteArray), headers, HttpStatus.OK);
406
 
447
 
407
	}
448
	}
408
 
449
 
-
 
450
	@RequestMapping(value = "/updatePriceDropImeis", method = RequestMethod.POST)
-
 
451
	public String downloadTotalPriceDropIMEI(HttpServletRequest request,
-
 
452
			@RequestBody PriceDropImeisModel priceDropImeisModel, Model model)
-
 
453
			throws ProfitMandiBusinessException, Exception {
-
 
454
		PriceDropImeiStatus status=PriceDropImeiStatus.PENDING;;
-
 
455
 
-
 
456
		switch (priceDropImeisModel.getUpdatedStatus()) {
-
 
457
		case "pending": {
-
 
458
			status = PriceDropImeiStatus.PENDING;
-
 
459
			break;
-
 
460
		}
-
 
461
		case "approved": {
-
 
462
			status = PriceDropImeiStatus.APPROVED;
-
 
463
			break;
-
 
464
		}
-
 
465
		case "rejected": {
-
 
466
			status = PriceDropImeiStatus.REJECTED;
-
 
467
			break;
-
 
468
		}
-
 
469
 
-
 
470
		}
-
 
471
		List<PriceDropIMEI> priceDropIMEIs = priceDropIMEIRepository
-
 
472
				.selectByPriceDropId(priceDropImeisModel.getPriceDropId());
-
 
473
 
-
 
474
		List<PriceDropIMEI> priceDropIMEIsToProcess = new ArrayList<>();
-
 
475
		for (PriceDropIMEI priceDropIMEI : priceDropIMEIs) {
-
 
476
			if (!priceDropImeisModel.getUpdatedImeis().contains(priceDropIMEI.getImei())
-
 
477
					|| priceDropIMEI.getStatus().equals(PriceDropImeiStatus.APPROVED)
-
 
478
					|| priceDropIMEI.getStatus().equals(status)) {
-
 
479
				continue;
-
 
480
			} else {
-
 
481
				if(status.equals(PriceDropImeiStatus.APPROVED)) {
-
 
482
					priceDropIMEIsToProcess.add(priceDropIMEI);
-
 
483
				}
-
 
484
				priceDropIMEI.setStatus(status);
-
 
485
				priceDropIMEI.setUpdateTimestamp(LocalDateTime.now());
-
 
486
				priceDropIMEIRepository.persist(priceDropIMEI);
-
 
487
			}
-
 
488
		}
-
 
489
		PriceDrop priceDrop = priceDropRepository.selectById(priceDropImeisModel.getPriceDropId());
-
 
490
		Item item = itemRepository.selectAllByCatalogItemId(priceDrop.getCatalogItemId()).get(0);
-
 
491
		String description = item.getItemDescriptionNoColor();
-
 
492
		if (priceDropIMEIsToProcess.size() > 0) {
-
 
493
			List<String> serialNumbers = priceDropIMEIsToProcess.stream().map(x -> x.getImei())
-
 
494
					.collect(Collectors.toList());
-
 
495
			List<LineItemImei> lineItemImeis = lineItemImeisRepository.selectByIMEI(serialNumbers);
-
 
496
			Map<Integer, List<InventoryItem>> pendingPartnerInventoryMap = priceDropService
-
 
497
					.getInventoryForPriceDrop(lineItemImeis, priceDrop).stream()
-
 
498
					.collect(Collectors.groupingBy(InventoryItem::getFofoId));
-
 
499
 
-
 
500
			for (Map.Entry<Integer, List<InventoryItem>> pendingPartnerInventory : pendingPartnerInventoryMap
-
 
501
					.entrySet()) {
-
 
502
				List<InventoryItem> fofoInventoryList = pendingPartnerInventory.getValue();
-
 
503
				int fofoId = pendingPartnerInventory.getKey();
-
 
504
 
-
 
505
				String reversalReason = MessageFormat.format(
-
 
506
						"Scheme  differential for Price Drop of Rs.{0} on {1}, on {3}. Total {2} item(s)",
-
 
507
						priceDrop.getAmount(), description, fofoInventoryList.size(),
-
 
508
						FormattingUtils.formatDate(priceDrop.getAffectedOn()));
-
 
509
				String aReason = MessageFormat.format(
-
 
510
						"Payout of Rs.{4} per unit for Price Drop of Rs.{0} on {1}, on {3}. Total {2} item(s)",
-
 
511
						priceDrop.getAmount(), description, fofoInventoryList.size(),
-
 
512
						FormattingUtils.formatDate(priceDrop.getAffectedOn()), priceDrop.getPartnerPayout());
-
 
513
				inventoryService.updatePriceDrop(fofoInventoryList, priceDrop.getAmount());
-
 
514
				if (item.getBrand().equals("Samsung")) {
-
 
515
					schemeService.reverseSchemes(fofoInventoryList, priceDrop.getId(),
-
 
516
							reversalReason);
-
 
517
				}
-
 
518
				walletService.addAmountToWallet(fofoId, priceDrop.getId(), WalletReferenceType.PRICE_DROP, aReason,
-
 
519
						priceDrop.getPartnerPayout() * fofoInventoryList.size());
-
 
520
			}
-
 
521
 
-
 
522
		}
-
 
523
		
-
 
524
		
-
 
525
		model.addAttribute("response", mvcResponseSender.createResponseString(true));
-
 
526
		return "response";
-
 
527
 
-
 
528
	}
-
 
529
 
409
	private List<ImeiDropSummaryModel> getAllSerialNumbersByAffectedDate(LocalDateTime affectedOn,
530
	private List<ImeiDropSummaryModel> getAllSerialNumbersByAffectedDate(LocalDateTime affectedOn,
410
			Integer catalogItemId) throws Exception {
531
			Integer catalogItemId) throws Exception {
411
		List<Item> items = itemRepository.selectAllByCatalogItemId(catalogItemId);
532
		List<Item> items = itemRepository.selectAllByCatalogItemId(catalogItemId);
412
		List<String> itemIds = items.stream().map(x -> String.valueOf(x.getId())).collect(Collectors.toList());
533
		List<String> itemIds = items.stream().map(x -> String.valueOf(x.getId())).collect(Collectors.toList());
413
 
534
 
Line 437... Line 558...
437
		return mergedImeis;
558
		return mergedImeis;
438
	}
559
	}
439
 
560
 
440
	private ByteArrayOutputStream getByteArrayOutputStream(LocalDateTime affectedOn, Integer catalogItemId)
561
	private ByteArrayOutputStream getByteArrayOutputStream(LocalDateTime affectedOn, Integer catalogItemId)
441
			throws Exception {
562
			throws Exception {
442
		List<ImeiDropSummaryModel> imeiDropSummaryModelList = this.getAllSerialNumbersByAffectedDate(affectedOn, catalogItemId);
563
		List<ImeiDropSummaryModel> imeiDropSummaryModelList = this.getAllSerialNumbersByAffectedDate(affectedOn,
-
 
564
				catalogItemId);
443
		List<List<Object>> rows = new ArrayList<>();
565
		List<List<Object>> rows = new ArrayList<>();
444
		for (ImeiDropSummaryModel imeiDropSummaryModel : imeiDropSummaryModelList) {
566
		for (ImeiDropSummaryModel imeiDropSummaryModel : imeiDropSummaryModelList) {
445
			rows.add(this.getRow(imeiDropSummaryModel));
567
			rows.add(this.getRow(imeiDropSummaryModel));
446
		}
568
		}
447
		return FileUtil.getCSVByteStream(Arrays.asList("IMEI Number", "Store Name", "Store Code", "Item ID", "Brand",
569
		return FileUtil.getCSVByteStream(Arrays.asList("IMEI Number", "Store Name", "Store Code", "Item ID", "Brand",
448
				"Model Name", "Model Number", "Color", "Last Scanned"), rows);
570
				"Model Name", "Model Number", "Color", "Last Scanned"), rows);
449
	}
571
	}
450
	
572
 
451
	private List<Object> getRow(ImeiDropSummaryModel imeiDropSummaryModel) {
573
	private List<Object> getRow(ImeiDropSummaryModel imeiDropSummaryModel) {
452
		List<Object> row = new ArrayList<>();
574
		List<Object> row = new ArrayList<>();
453
		row.add(imeiDropSummaryModel.getSerialNumber());
575
		row.add(imeiDropSummaryModel.getSerialNumber());
454
		row.add(imeiDropSummaryModel.getStoreName());
576
		row.add(imeiDropSummaryModel.getStoreName());
455
		row.add(imeiDropSummaryModel.getPartnerCode());
577
		row.add(imeiDropSummaryModel.getPartnerCode());