Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
23755 amit.gupta 1
package com.smartdukaan.cron.migrations;
2
 
25765 amit.gupta 3
import java.io.File;
23824 amit.gupta 4
import java.time.LocalDate;
23755 amit.gupta 5
import java.time.LocalDateTime;
23824 amit.gupta 6
import java.time.LocalTime;
24819 amit.gupta 7
import java.util.ArrayList;
23755 amit.gupta 8
import java.util.Arrays;
23827 amit.gupta 9
import java.util.Collections;
24002 amit.gupta 10
import java.util.HashMap;
24005 amit.gupta 11
import java.util.HashSet;
23755 amit.gupta 12
import java.util.List;
24002 amit.gupta 13
import java.util.Map;
25749 amit.gupta 14
import java.util.Set;
15
import java.util.concurrent.TimeUnit;
24641 amit.gupta 16
import java.util.stream.Collectors;
23755 amit.gupta 17
 
24819 amit.gupta 18
import org.apache.commons.io.output.ByteArrayOutputStream;
23755 amit.gupta 19
import org.apache.commons.lang.StringUtils;
20
import org.apache.logging.log4j.LogManager;
21
import org.apache.logging.log4j.Logger;
25773 amit.gupta 22
import org.openqa.selenium.Dimension;
25749 amit.gupta 23
import org.openqa.selenium.OutputType;
24
import org.openqa.selenium.TakesScreenshot;
25
import org.openqa.selenium.WebDriver;
26
import org.openqa.selenium.chrome.ChromeDriver;
25752 amit.gupta 27
import org.openqa.selenium.chrome.ChromeOptions;
23755 amit.gupta 28
import org.springframework.beans.factory.annotation.Autowired;
24819 amit.gupta 29
import org.springframework.core.io.ByteArrayResource;
24767 amit.gupta 30
import org.springframework.mail.javamail.JavaMailSender;
23755 amit.gupta 31
import org.springframework.stereotype.Component;
32
import org.springframework.transaction.annotation.Transactional;
33
 
25043 amit.gupta 34
import com.smartdukaan.cron.scheduled.ScheduledTasks;
26033 amit.gupta 35
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
24819 amit.gupta 36
import com.spice.profitmandi.common.util.FileUtil;
25749 amit.gupta 37
import com.spice.profitmandi.common.util.FormattingUtils;
24819 amit.gupta 38
import com.spice.profitmandi.common.util.Utils;
26033 amit.gupta 39
import com.spice.profitmandi.dao.entity.catalog.Item;
25021 amit.gupta 40
import com.spice.profitmandi.dao.entity.catalog.Scheme;
24716 amit.gupta 41
import com.spice.profitmandi.dao.entity.fofo.CurrentInventorySnapshot;
24806 amit.gupta 42
import com.spice.profitmandi.dao.entity.fofo.FofoOrder;
43
import com.spice.profitmandi.dao.entity.fofo.FofoOrderItem;
25530 amit.gupta 44
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
24005 amit.gupta 45
import com.spice.profitmandi.dao.entity.fofo.InventoryItem;
24883 amit.gupta 46
import com.spice.profitmandi.dao.entity.fofo.PartnerTargetDetails;
26033 amit.gupta 47
import com.spice.profitmandi.dao.entity.fofo.PrebookingOrder;
23898 amit.gupta 48
import com.spice.profitmandi.dao.entity.fofo.Purchase;
24716 amit.gupta 49
import com.spice.profitmandi.dao.entity.fofo.ScanRecord;
25034 amit.gupta 50
import com.spice.profitmandi.dao.entity.fofo.SchemeInOut;
25021 amit.gupta 51
import com.spice.profitmandi.dao.entity.fofo.SchemeItem;
24883 amit.gupta 52
import com.spice.profitmandi.dao.entity.fofo.TargetSlab;
24953 amit.gupta 53
import com.spice.profitmandi.dao.entity.inventory.SaholicInventorySnapshot;
23824 amit.gupta 54
import com.spice.profitmandi.dao.entity.transaction.LineItem;
23755 amit.gupta 55
import com.spice.profitmandi.dao.entity.transaction.LineItemImei;
56
import com.spice.profitmandi.dao.entity.transaction.Order;
24802 amit.gupta 57
import com.spice.profitmandi.dao.entity.transaction.SellerWarehouse;
25046 amit.gupta 58
import com.spice.profitmandi.dao.entity.transaction.UserWallet;
25034 amit.gupta 59
import com.spice.profitmandi.dao.entity.transaction.UserWalletHistory;
25530 amit.gupta 60
import com.spice.profitmandi.dao.entity.user.Address;
61
import com.spice.profitmandi.dao.entity.user.User;
25021 amit.gupta 62
import com.spice.profitmandi.dao.enumuration.catalog.AmountType;
25522 amit.gupta 63
import com.spice.profitmandi.dao.enumuration.catalog.SchemeType;
24716 amit.gupta 64
import com.spice.profitmandi.dao.repository.GenericRepository;
25034 amit.gupta 65
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
25021 amit.gupta 66
import com.spice.profitmandi.dao.repository.catalog.SchemeRepository;
25749 amit.gupta 67
import com.spice.profitmandi.dao.repository.cs.CsService;
23899 amit.gupta 68
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
24716 amit.gupta 69
import com.spice.profitmandi.dao.repository.fofo.CurrentInventorySnapshotRepository;
24002 amit.gupta 70
import com.spice.profitmandi.dao.repository.fofo.DebitNoteRepository;
24806 amit.gupta 71
import com.spice.profitmandi.dao.repository.fofo.FofoOrderItemRepository;
72
import com.spice.profitmandi.dao.repository.fofo.FofoOrderRepository;
24002 amit.gupta 73
import com.spice.profitmandi.dao.repository.fofo.InventoryItemRepository;
24806 amit.gupta 74
import com.spice.profitmandi.dao.repository.fofo.InvoiceNumberGenerationSequenceRepository;
24883 amit.gupta 75
import com.spice.profitmandi.dao.repository.fofo.PartnerTargetRepository;
26033 amit.gupta 76
import com.spice.profitmandi.dao.repository.fofo.PrebookingOrderRepository;
23898 amit.gupta 77
import com.spice.profitmandi.dao.repository.fofo.PurchaseRepository;
24716 amit.gupta 78
import com.spice.profitmandi.dao.repository.fofo.ScanRecordRepository;
24002 amit.gupta 79
import com.spice.profitmandi.dao.repository.fofo.SchemeInOutRepository;
25021 amit.gupta 80
import com.spice.profitmandi.dao.repository.fofo.SchemeItemRepository;
24883 amit.gupta 81
import com.spice.profitmandi.dao.repository.fofo.TargetSlabRepository;
82
import com.spice.profitmandi.dao.repository.fofo.TargetSlabRepositoryImpl;
24953 amit.gupta 83
import com.spice.profitmandi.dao.repository.inventory.SaholicInventorySnapshotRepository;
84
import com.spice.profitmandi.dao.repository.inventory.SaholicReservationInventorySnapshotRepository;
23755 amit.gupta 85
import com.spice.profitmandi.dao.repository.transaction.LineItemImeisRepository;
23824 amit.gupta 86
import com.spice.profitmandi.dao.repository.transaction.LineItemRepository;
23755 amit.gupta 87
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
24772 amit.gupta 88
import com.spice.profitmandi.dao.repository.transaction.ReturnOrderRepository;
24802 amit.gupta 89
import com.spice.profitmandi.dao.repository.transaction.SellerWarehouseRepository;
24767 amit.gupta 90
import com.spice.profitmandi.dao.repository.transaction.UserWalletHistoryRepository;
91
import com.spice.profitmandi.dao.repository.transaction.UserWalletRepository;
25530 amit.gupta 92
import com.spice.profitmandi.dao.repository.user.AddressRepository;
24002 amit.gupta 93
import com.spice.profitmandi.dao.repository.user.UserRepository;
23899 amit.gupta 94
import com.spice.profitmandi.service.inventory.InventoryService;
26033 amit.gupta 95
import com.spice.profitmandi.service.inventory.PurchaseService;
24266 amit.gupta 96
import com.spice.profitmandi.service.order.OrderService;
24005 amit.gupta 97
import com.spice.profitmandi.service.pricing.PriceDropService;
98
import com.spice.profitmandi.service.scheme.SchemeService;
23899 amit.gupta 99
import com.spice.profitmandi.service.transaction.TransactionService;
100
import com.spice.profitmandi.service.user.RetailerService;
101
import com.spice.profitmandi.service.wallet.WalletService;
23755 amit.gupta 102
 
24953 amit.gupta 103
import in.shop2020.model.v1.order.OrderStatus;
24002 amit.gupta 104
import in.shop2020.model.v1.order.WalletReferenceType;
105
 
23755 amit.gupta 106
@Component
107
@Transactional(rollbackFor = Throwable.class)
108
public class RunOnceTasks {
109
 
110
	private static final Logger LOGGER = LogManager.getLogger(RunOnceTasks.class);
111
 
112
	@Autowired
23824 amit.gupta 113
	private LineItemRepository lineItemRepository;
24711 amit.gupta 114
 
23905 amit.gupta 115
	@Autowired
24953 amit.gupta 116
	private SaholicInventorySnapshotRepository saholicInventorySnapshotRepository;
25752 amit.gupta 117
 
25749 amit.gupta 118
	@Autowired
119
	private CsService csService;
26033 amit.gupta 120
 
121
	@Autowired
122
	private PrebookingOrderRepository prebookingOrderRepository;
24953 amit.gupta 123
 
124
	@Autowired
125
	private SaholicReservationInventorySnapshotRepository saholicReservationInventorySnapshotRepository;
126
 
127
	@Autowired
24883 amit.gupta 128
	private TargetSlabRepository targetSlabRepository;
129
 
130
	@Autowired
131
	private PartnerTargetRepository partnerTargetRepository;
132
 
133
	@Autowired
24802 amit.gupta 134
	private SellerWarehouseRepository sellerWarehouseRepository;
24814 amit.gupta 135
 
24802 amit.gupta 136
	@Autowired
24806 amit.gupta 137
	private FofoOrderItemRepository fofoOrderItemRepository;
24814 amit.gupta 138
 
24806 amit.gupta 139
	@Autowired
140
	private FofoOrderRepository fofoOrderRepository;
24814 amit.gupta 141
 
24806 amit.gupta 142
	@Autowired
24767 amit.gupta 143
	private UserWalletRepository userWalletRepository;
144
 
145
	@Autowired
146
	private UserWalletHistoryRepository userWalletHistoryRepository;
147
 
148
	@Autowired
24002 amit.gupta 149
	private UserRepository userRepository;
24711 amit.gupta 150
 
24002 amit.gupta 151
	@Autowired
23899 amit.gupta 152
	private WalletService walletService;
153
 
154
	@Autowired
25034 amit.gupta 155
	private ItemRepository itemRepository;
156
 
157
	@Autowired
23899 amit.gupta 158
	private InventoryService inventoryService;
159
 
160
	@Autowired
161
	private TransactionService transactionService;
26033 amit.gupta 162
 
163
	@Autowired
164
	private PurchaseService purchaseService;
23899 amit.gupta 165
 
26033 amit.gupta 166
 
24711 amit.gupta 167
	// Service for Tertiary/Partner Orders
24266 amit.gupta 168
	@Autowired
169
	private OrderService orderService;
23767 amit.gupta 170
 
23755 amit.gupta 171
	@Autowired
25021 amit.gupta 172
	private SchemeRepository schemeRepository;
25516 amit.gupta 173
 
25043 amit.gupta 174
	@Autowired
25530 amit.gupta 175
	private AddressRepository addressRepository;
25749 amit.gupta 176
 
25530 amit.gupta 177
	@Autowired
25043 amit.gupta 178
	private ScheduledTasks scheduledTasks;
25034 amit.gupta 179
 
25021 amit.gupta 180
	@Autowired
181
	private SchemeItemRepository schemeItemRepository;
182
 
183
	@Autowired
24772 amit.gupta 184
	private ReturnOrderRepository returnOrderRepository;
185
 
186
	@Autowired
23899 amit.gupta 187
	private FofoStoreRepository fofoStoreRepository;
188
 
189
	@Autowired
23755 amit.gupta 190
	private LineItemImeisRepository lineItemImeisRepository;
24711 amit.gupta 191
 
24002 amit.gupta 192
	@Autowired
193
	private InventoryItemRepository inventoryItemRepository;
24814 amit.gupta 194
 
24806 amit.gupta 195
	@Autowired
196
	private InvoiceNumberGenerationSequenceRepository invoiceNumberGenerationSequenceRepository;
23901 amit.gupta 197
 
23898 amit.gupta 198
	@Autowired
23899 amit.gupta 199
	private RetailerService retailerService;
24711 amit.gupta 200
 
24002 amit.gupta 201
	@Autowired
202
	private SchemeInOutRepository schemeInOutRepository;
24711 amit.gupta 203
 
24002 amit.gupta 204
	@Autowired
205
	private DebitNoteRepository debitNoteRepository;
23899 amit.gupta 206
 
207
	@Autowired
24716 amit.gupta 208
	private GenericRepository genericRepository;
209
 
210
	@Autowired
23898 amit.gupta 211
	private PurchaseRepository purchaseRepository;
24711 amit.gupta 212
 
24005 amit.gupta 213
	@Autowired
214
	private PriceDropService priceDropService;
24883 amit.gupta 215
 
24819 amit.gupta 216
	@Autowired
217
	private JavaMailSender googleMailSender;
24711 amit.gupta 218
 
24005 amit.gupta 219
	@Autowired
220
	private SchemeService schemeService;
24711 amit.gupta 221
 
24716 amit.gupta 222
	@Autowired
223
	private CurrentInventorySnapshotRepository currentInventorySnapshotRepository;
224
 
225
	@Autowired
24767 amit.gupta 226
	private OrderRepository orderRepository;
227
 
228
	@Autowired
24716 amit.gupta 229
	private ScanRecordRepository scanRecordRepository;
230
 
24767 amit.gupta 231
	@Autowired
232
	private JavaMailSender mailSender;
233
 
24005 amit.gupta 234
	public void dropCorrection() throws Exception {
235
 
24711 amit.gupta 236
		walletService.rollbackAmountFromWallet(175128034, 274, 4, WalletReferenceType.PRICE_DROP,
237
				"Scheme  differential for Price Drop of Rs.712 on Samsung J6 J600GG, on 01-08-2018 for missing 1pc");
238
		walletService.rollbackAmountFromWallet(175128034, -259, 4, WalletReferenceType.PRICE_DROP,
239
				"Scheme  differential for Price Drop of Rs.712 on Samsung J6 J600GG, on 01-08-2018 for missing 1pc");
240
		List<InventoryItem> iis = inventoryItemRepository.selectByIds(new HashSet<>(Arrays.asList(3518, 3516)));
241
		schemeService.reverseSchemes(iis, 8,
242
				"Scheme  differential for Price Drop of Rs.712 on Samsung J6 J600GG, on 01-08-2018. Total 2 item(s)");
243
		List<InventoryItem> iis1 = inventoryItemRepository.selectByIds(new HashSet<>(Arrays.asList(3502, 3334, 3503)));
244
		schemeService.reverseSchemes(iis1, 13,
245
				"Scheme  differential for Price Drop of Rs.485 on Samsung Galaxy J4 J400FD, on 18-07-2018. Total 3 item(s)");
246
 
247
		List<InventoryItem> iis2 = inventoryItemRepository.selectByIds(new HashSet<>(Arrays.asList(3319)));
248
		schemeService.reverseSchemes(iis2, 13,
249
				"Scheme  differential for Price Drop of Rs.485 on Samsung Galaxy J4 J400FD, on 18-07-2018. Total 1 item(s)");
24005 amit.gupta 250
	}
24711 amit.gupta 251
 
25268 amit.gupta 252
	public void schemeRollback() throws Exception {
24002 amit.gupta 253
		Map<Integer, Float> fofoIdAmount = new HashMap<>();
24003 amit.gupta 254
		fofoIdAmount.put(175135218, 1942f);
255
		String description = "Price drop/differential rolled out as, they were already returned, Total 2pcs.";
24711 amit.gupta 256
		for (Map.Entry<Integer, Float> fofoIdAmountEntry : fofoIdAmount.entrySet()) {
257
			Integer fofoId = fofoIdAmountEntry.getKey();
24002 amit.gupta 258
			Float amount = fofoIdAmountEntry.getValue();
24003 amit.gupta 259
			walletService.rollbackAmountFromWallet(fofoId, amount, 4, WalletReferenceType.PRICE_DROP, description);
24002 amit.gupta 260
		}
24004 amit.gupta 261
		fofoIdAmount.put(175135218, 438f);
24711 amit.gupta 262
		for (Map.Entry<Integer, Float> fofoIdAmountEntry : fofoIdAmount.entrySet()) {
263
			Integer fofoId = fofoIdAmountEntry.getKey();
24004 amit.gupta 264
			Float amount = fofoIdAmountEntry.getValue();
265
			walletService.rollbackAmountFromWallet(fofoId, amount, 4, WalletReferenceType.PRICE_DROP, description);
266
		}
24002 amit.gupta 267
	}
23755 amit.gupta 268
 
23898 amit.gupta 269
	public void populateGrnTimestamp() {
270
		List<Purchase> allPurchases = purchaseRepository.selectAll();
23899 amit.gupta 271
		for (Purchase p : allPurchases) {
23898 amit.gupta 272
			String invoiceNumber = p.getPurchaseReference();
23899 amit.gupta 273
			if (p.getCompleteTimestamp() == null) {
23898 amit.gupta 274
				LOGGER.info("GRN for invoice {} is delivered but partially Completed.", p.getPurchaseReference());
275
			} else {
276
				List<Order> orders = orderRepository.selectByAirwayBillOrInvoiceNumber(invoiceNumber, p.getFofoId());
23899 amit.gupta 277
				for (Order order : orders) {
23902 amit.gupta 278
					if (order.getPartnerGrnTimestamp() == null) {
279
						order.setPartnerGrnTimestamp(p.getCompleteTimestamp());
23898 amit.gupta 280
						orderRepository.persist(order);
281
					}
282
				}
283
			}
284
		}
23899 amit.gupta 285
 
23898 amit.gupta 286
	}
23899 amit.gupta 287
 
24716 amit.gupta 288
	public void migarateLineItemsToNewTable() throws Exception {
23755 amit.gupta 289
		LOGGER.info("Before Migrated LineItems Successfully");
23824 amit.gupta 290
		int lineItemImeiId = 0;
291
		LocalDateTime startDate = null;
292
		try {
293
			lineItemImeiId = lineItemImeisRepository.selectMaxId();
23899 amit.gupta 294
			LineItem lineItem = lineItemRepository
295
					.selectById(lineItemImeisRepository.selectById(lineItemImeiId).getLineItemId());
23824 amit.gupta 296
			Order order = orderRepository.selectById(lineItem.getOrderId());
297
			startDate = order.getBillingTimestamp();
298
		} catch (Exception e) {
299
			LOGGER.info("Running before first time");
23826 amit.gupta 300
			startDate = LocalDateTime.of(LocalDate.of(2017, 7, 1), LocalTime.MIDNIGHT);
23824 amit.gupta 301
		}
302
		List<Order> orders = orderRepository.selectAllByBillingDatesBetween(startDate, LocalDateTime.now());
23827 amit.gupta 303
		Collections.reverse(orders);
23899 amit.gupta 304
 
23755 amit.gupta 305
		for (Order order : orders) {
23824 amit.gupta 306
			try {
23767 amit.gupta 307
				String serialNumbers = order.getLineItem().getSerialNumber();
308
				if (!StringUtils.isEmpty(serialNumbers)) {
309
					List<String> serialNumberList = Arrays.asList(serialNumbers.split(","));
310
					for (String serialNumber : serialNumberList) {
311
						int lineItemId = order.getLineItem().getId();
312
						LineItemImei lineItemImei = new LineItemImei();
313
						lineItemImei.setSerialNumber(serialNumber);
314
						lineItemImei.setLineItemId(lineItemId);
315
						lineItemImeisRepository.persist(lineItemImei);
316
					}
317
				} else {
318
					LOGGER.info("Serial Numbers dont exist for Order {}", order.getId());
23755 amit.gupta 319
				}
23824 amit.gupta 320
			} catch (Exception e) {
23899 amit.gupta 321
				LOGGER.info("Error occurred while creating lineitem imei {}, because of {}", order.getId(),
322
						e.getMessage());
23755 amit.gupta 323
			}
324
		}
325
		LOGGER.info("Migrated LineItems Successfully");
326
	}
24266 amit.gupta 327
 
328
	public void cancelOrder(List<String> invoiceNumbers) throws Exception {
329
		orderService.cancelOrder(invoiceNumbers);
330
	}
24711 amit.gupta 331
 
24722 amit.gupta 332
	public void migratePurchase() throws Exception {
24641 amit.gupta 333
		List<Purchase> purchases = purchaseRepository.selectPurchaseAllPurchasesLessThanZero();
24706 amit.gupta 334
		System.out.printf("Total Purchases count is %s", purchases.size());
24711 amit.gupta 335
		for (Purchase purchase : purchases) {
336
			List<InventoryItem> inventoryItems = inventoryItemRepository.selectByPurchaseId(purchase.getId());
337
			Map<Integer, List<InventoryItem>> itemIdInventoryMap = inventoryItems.stream()
338
					.collect(Collectors.groupingBy(InventoryItem::getItemId));
339
			List<Order> orders = orderRepository.selectByAirwayBillOrInvoiceNumber(purchase.getPurchaseReference(),
340
					purchase.getFofoId());
341
			Map<Integer, Integer> ourSaleItemQtyMap = orders.stream().collect(Collectors.groupingBy(
342
					x -> x.getLineItem().getItemId(), Collectors.summingInt(x -> x.getLineItem().getQuantity())));
343
			Map<Integer, Integer> theirPurchaseItemQtyMap = inventoryItems.stream().collect(Collectors
344
					.groupingBy(InventoryItem::getItemId, Collectors.summingInt(InventoryItem::getInitialQuantity)));
24709 amit.gupta 345
			for (Map.Entry<Integer, Integer> itemQtyEntry : theirPurchaseItemQtyMap.entrySet()) {
24711 amit.gupta 346
				if (!ourSaleItemQtyMap.containsKey(itemQtyEntry.getKey())) {
347
					LOGGER.info("Cannot find in Invoice {} item {}", purchase.getPurchaseReference(),
348
							itemQtyEntry.getKey());
24646 amit.gupta 349
					continue;
24645 amit.gupta 350
				}
24709 amit.gupta 351
				int ourSale = ourSaleItemQtyMap.get(itemQtyEntry.getKey());
24713 amit.gupta 352
				int quantityToReduce = itemQtyEntry.getValue() - ourSale;
24716 amit.gupta 353
				List<InventoryItem> itemIis = itemIdInventoryMap.get(itemQtyEntry.getKey());
354
				if (itemIdInventoryMap != null) {
355
					for (InventoryItem ii : itemIis) {
24915 amit.gupta 356
						if (ii.getSerialNumber() == null && ii.getGoodQuantity() == ii.getInitialQuantity()
357
								&& quantityToReduce >= ii.getInitialQuantity()) {
24734 amit.gupta 358
							LOGGER.info("Changed in inventoryItems {}, {}, {}, {}, {}, {}",
24716 amit.gupta 359
									purchase.getPurchaseReference(), ii.getId(), ii.getItemId(),
24734 amit.gupta 360
									ii.getInitialQuantity(), ii.getGoodQuantity(), quantityToReduce);
24912 amit.gupta 361
							List<ScanRecord> scanRecords = scanRecordRepository.selectByInventoryItemId(ii.getId());
362
							for (ScanRecord scanRecord : scanRecords) {
24915 amit.gupta 363
								CurrentInventorySnapshot cis = currentInventorySnapshotRepository
364
										.selectByItemIdAndFofoId(itemQtyEntry.getKey(), purchase.getFofoId());
365
								scanRecord.setQuantity(0);
366
								ii.setGoodQuantity(0);
367
								quantityToReduce = quantityToReduce - ii.getInitialQuantity();
368
								cis.setAvailability(cis.getAvailability() - ii.getInitialQuantity());
369
								purchase.setUnfullfilledNonSerializedQuantity(
370
										purchase.getUnfullfilledNonSerializedQuantity() + quantityToReduce);
371
								LOGGER.info("Rectified {}, {}, {}, {}, {}, {}", purchase.getPurchaseReference(),
372
										ii.getId(), ii.getItemId(), ii.getInitialQuantity(), ii.getGoodQuantity(),
373
										quantityToReduce);
24711 amit.gupta 374
							}
24641 amit.gupta 375
						}
376
					}
377
				}
378
			}
379
		}
24953 amit.gupta 380
		// throw new Exception();
24641 amit.gupta 381
	}
24767 amit.gupta 382
 
24802 amit.gupta 383
	public void migrateChallansToInvoices() throws Exception {
24814 amit.gupta 384
		Map<String, List<Order>> invoiceOrdersMap = orderRepository.selectAllChallans().stream()
385
				.filter(x -> !x.getLineItem().getHsnCode().equals("NOGST"))
24794 amit.gupta 386
				.collect(Collectors.groupingBy(Order::getInvoiceNumber, Collectors.toList()));
24814 amit.gupta 387
 
25837 amit.gupta 388
		List<List<?>> rows = new ArrayList<>();
24814 amit.gupta 389
		for (String invoice : invoiceOrdersMap.keySet()) {
24794 amit.gupta 390
			Order oneOrder = invoiceOrdersMap.get(invoice).get(0);
391
			int totalOrders = invoiceOrdersMap.get(invoice).size();
392
			LineItem lineItem = oneOrder.getLineItem();
24802 amit.gupta 393
			oneOrder.setBillingTimestamp(LocalDateTime.now());
394
			oneOrder.setInvoiceNumber(getInvoiceNumber(oneOrder));
24819 amit.gupta 395
			rows.add(Arrays.asList(oneOrder.getId(), invoice, oneOrder.getInvoiceNumber(), lineItem.getQuantity()));
24883 amit.gupta 396
			LOGGER.info(invoice + "\t" + oneOrder.getInvoiceNumber() + oneOrder.getId() + "\t",
397
					"\t" + totalOrders + "\t" + lineItem.getQuantity());
24814 amit.gupta 398
			Purchase p = null;
399
			try {
400
				p = purchaseRepository.selectByPurchaseReferenceAndFofoId(invoice, oneOrder.getRetailerId());
401
			} catch (Exception e) {
24815 amit.gupta 402
				LOGGER.info("Could not find purchase for invoice {}", invoice);
24812 amit.gupta 403
			}
24814 amit.gupta 404
			if (p != null) {
405
				List<InventoryItem> inventoryItems = inventoryItemRepository.selectByPurchaseId(p.getId());
406
				for (InventoryItem inventoryItem : inventoryItems) {
24815 amit.gupta 407
					LOGGER.info(inventoryItem.getItemId() + " " + inventoryItem.getGoodQuantity() + " "
24883 amit.gupta 408
							+ inventoryItem.getHsnCode() + " " + inventoryItem.getSerialNumber() + " "
409
							+ p.getPurchaseReference());
24814 amit.gupta 410
				}
411
			}
412
 
24794 amit.gupta 413
		}
24818 amit.gupta 414
		changePartnerInvoices();
24883 amit.gupta 415
		ByteArrayOutputStream baos = FileUtil
416
				.getCSVByteStream(Arrays.asList("Order id", "Challan", "Invoice", "Quantity"), rows);
417
 
24819 amit.gupta 418
		Utils.sendMailWithAttachment(googleMailSender,
419
				new String[] { "amit.gupta@shop2020.in", "sunny.yadav@smartdukaan.com" }, null,
24883 amit.gupta 420
				"Challans Converted to Invoice", "PFA", "Challans-To-Invoice.csv",
421
				new ByteArrayResource(baos.toByteArray()));
24916 amit.gupta 422
		throw new Exception();
24794 amit.gupta 423
	}
24767 amit.gupta 424
 
24802 amit.gupta 425
	private String getInvoiceNumber(Order oneOrder) {
24805 amit.gupta 426
		String prefix = oneOrder.getInvoiceNumber().split("-")[1].replaceAll("\\d*", "");
24803 amit.gupta 427
		System.out.println("Prefix is " + prefix);
24802 amit.gupta 428
		SellerWarehouse sellerWarehouse = sellerWarehouseRepository.selectByPrefix(prefix);
429
		int newSequence = sellerWarehouse.getInvoiceSequence() + 1;
430
		sellerWarehouse.setInvoiceSequence(newSequence);
24814 amit.gupta 431
		return prefix + newSequence;
24802 amit.gupta 432
	}
24814 amit.gupta 433
 
24806 amit.gupta 434
	private void changePartnerInvoices() throws Exception {
24814 amit.gupta 435
		List<FofoOrder> fofoOrders = fofoOrderRepository.selectByInvoiceNumberLike("%SEC%");
436
		for (FofoOrder fofoOrder : fofoOrders) {
24806 amit.gupta 437
			FofoOrderItem fofoOrderItem = fofoOrderItemRepository.selectByOrderId(fofoOrder.getId()).get(0);
24814 amit.gupta 438
			if (fofoOrderItem.getBrand().equals("Vivo")) {
24806 amit.gupta 439
				String challanString = fofoOrder.getInvoiceNumber();
24814 amit.gupta 440
				String storeCode = invoiceNumberGenerationSequenceRepository.selectByFofoId(fofoOrder.getFofoId())
441
						.getPrefix();
24806 amit.gupta 442
				String invoiceNumber = orderService.getInvoiceNumber(fofoOrder.getFofoId(), storeCode);
443
				fofoOrder.setInvoiceNumber(invoiceNumber);
444
				fofoOrder.setCreateTimestamp(LocalDateTime.now());
24818 amit.gupta 445
				LOGGER.info(challanString + "\t" + invoiceNumber + "\t" + fofoOrderItem.getQuantity());
24806 amit.gupta 446
			}
24814 amit.gupta 447
 
24806 amit.gupta 448
		}
449
	}
24802 amit.gupta 450
 
24883 amit.gupta 451
	public void createMonthlyTargets() throws Exception {
452
		Map<String, List<TargetSlab>> defaultSlabs = targetSlabRepository.getAllDefaultSlabs();
453
		for (String memberType : defaultSlabs.keySet()) {
454
			PartnerTargetDetails ptd = new PartnerTargetDetails();
455
			ptd.setBrandName(null);
456
 
457
			LocalDate startDate = LocalDate.now().withDayOfMonth(1);
458
			int totalDays = startDate.lengthOfMonth();
459
			String monthName = startDate.getMonth().toString();
460
			ptd.setStartDate(startDate.atStartOfDay());
461
			ptd.setEndDate(startDate.plusDays(totalDays - 1).atTime(LocalTime.MAX));
462
			ptd.setTargetName(String.format("%s Sales Target for %s Partners", monthName, memberType));
463
			partnerTargetRepository.persist(ptd);
464
			TargetSlabRepositoryImpl.TYPE_PARTNER_MAPPING.get(memberType).forEach(x -> {
465
				x.setTargetId(ptd.getId());
466
				partnerTargetRepository.persist(x);
467
			});
468
 
469
			List<TargetSlab> slabs = defaultSlabs.get(memberType);
470
			slabs.stream().forEach(x -> {
471
				x.setTargetId(ptd.getId());
472
				targetSlabRepository.persist(x);
473
			});
474
		}
475
	}
476
 
25023 amit.gupta 477
	public void populateSchemes() {
25021 amit.gupta 478
		List<Integer> list05 = Arrays.asList(29093, 29094, 29095, 29096, 29097, 29098, 29099, 29101, 29102);
479
		List<Integer> list10 = Arrays.asList(29187, 29188);
480
		List<Integer> list13 = Arrays.asList(28095, 28097, 28098, 28101, 28102, 28104, 28106, 28107, 28108, 28227,
481
				28228, 28229, 28231, 29055, 29056, 29066, 29079);
482
		List<Integer> list15 = Arrays.asList(20891, 27938, 27939, 27940, 27941, 27943, 27947, 27948, 27953, 27954,
483
				27955, 28220, 28467, 29020, 29033, 29034, 29035, 29592, 29886, 29890, 29891, 29941, 29942, 27445, 27958,
484
				27960, 27961);
485
		List<Integer> list18 = Arrays.asList(28137, 28138, 28140, 28157, 28158, 28161, 28162, 28163, 28164, 28176,
486
				28177, 28178, 28199, 28200, 28208, 28209, 28210, 28211, 28215, 28216, 28217, 28230, 28380, 28381, 28382,
487
				28383, 28384, 28385, 28386, 28387, 28388, 28389, 28390, 28391, 28392, 28395, 28461, 28462, 28463, 28464,
488
				28465, 28466, 28488, 28489, 28490, 28491, 28564, 28565, 28762, 28773, 28871, 28872, 28873, 28874, 28880,
489
				28881, 28914, 28915, 28916, 28917, 28918, 28919, 28920, 29046, 29047, 29048, 29068, 29069, 29110, 29111,
490
				29112, 29113, 29114, 29115, 29116, 29117, 29207, 29208, 29217, 29218, 29225, 29474, 29475, 29476, 29477,
491
				29478, 29479, 29483, 29485, 29486, 29487, 29488, 29739, 29740, 29741, 29742, 29743, 29744, 29745, 29746,
492
				29747, 29748, 29749, 29753, 29756, 29757, 29758, 29760, 29761, 29762, 29763, 29764, 29765, 29766, 29767,
493
				29779, 29780, 29781, 29792, 29793, 29828, 29829, 29830, 29879, 29880, 29881, 29882, 29951);
494
		List<Integer> list20 = Arrays.asList(27975, 27976, 28091, 28363, 29023, 29024, 29025);
495
		List<Integer> list25 = Arrays.asList(28763, 28764, 28765, 29152, 29154, 29157, 29209, 29210, 29601, 29602,
496
				29720, 29721, 29722, 29723, 29725, 29726, 29727);
497
		List<Integer> list30 = Arrays.asList(27962, 27963, 27964, 27965, 27966, 27968, 27969, 28328, 28362, 28566,
498
				28567, 28568, 28571, 28572, 29073, 29074, 29075, 29080, 29081, 29120, 29121, 29122, 29124, 29189, 29190,
499
				29191, 29192, 29193, 29194, 29196, 29197, 29198, 29199, 29515, 29516, 29517, 29675, 29676, 29677, 29678,
500
				29679, 29707, 29708, 29794, 29795, 29883, 29884, 29885, 29887, 29888, 29889, 29931, 29932, 29935, 29936,
501
				29937, 29938, 29939, 29940);
502
		List<Integer> list35 = Arrays.asList(27996, 27998, 29067, 29071, 29643, 29644, 29945, 29946, 29987, 29052,
503
				29053, 29078, 29085, 29086, 29567, 29568, 29569, 29570, 29797, 29914, 29915, 29930, 28877, 28878, 29604,
504
				29605, 29606, 29775, 29776, 29777, 29778, 28862, 28863, 28864, 29026, 29103, 29104, 29105, 28979, 28980,
505
				28981, 28982, 28983, 29002, 29003, 29004, 29834, 29835, 29836, 29837, 29943);
506
		List<Integer> list40 = Arrays.asList(29082, 29083, 28766, 28767, 28768, 28769, 28771);
507
		List<Integer> list45 = Arrays.asList(28026, 28027, 28028, 29528, 29529, 29530, 29534, 29535, 29536, 29538,
508
				29755);
509
		List<Integer> list55 = Arrays.asList(28010, 28011, 28015, 28016, 28019, 28240, 28469, 28470, 28471, 28569,
510
				28570, 28674, 28759, 28761, 28909, 28910, 28911, 28912, 28913, 29108, 29109, 29143, 29144, 29145, 29146,
511
				29211, 29212, 29213, 29214, 29482, 29511, 29512, 29521, 29525, 29526, 29527, 29574, 29575, 29576, 29611,
512
				29612, 29616, 29641, 29642, 29728, 29729, 29750, 29771, 29782, 29783, 29784, 29923, 29924, 29944, 29953,
513
				29992, 29994, 27977, 27978, 28092, 28325, 28326, 28327, 28486, 28487, 29148, 29149, 29150, 29151, 29384,
514
				29385, 29386, 29427, 29489, 29518, 29519, 29520, 29577, 29578, 29579, 29580, 29586, 29660, 29661, 29662,
515
				29663, 29769, 29770, 29790, 29791, 29796, 29928, 29929, 29947, 29948, 28093, 28094, 28556, 28557, 28673,
516
				28867, 28868, 28870, 29089, 29090, 29091, 29106, 29107);
517
		List<Integer> list65 = Arrays.asList(28058, 28223, 28224, 28225, 28226, 28329, 29201, 29202, 29203, 29204,
518
				29205, 29206, 29466, 29467, 29468, 29469, 29470, 29471, 29472, 29573);
519
		Map<Float, List<Integer>> m = new HashMap<>();
520
		m.put(0.5f, list05);
521
		m.put(1.0f, list10);
522
		m.put(1.3f, list13);
523
		m.put(1.5f, list15);
524
		m.put(1.8f, list18);
525
		m.put(2.0f, list20);
526
		m.put(2.5f, list25);
527
		m.put(3.0f, list30);
528
		m.put(3.5f, list35);
529
		m.put(4.0f, list40);
530
		m.put(4.5f, list45);
531
		m.put(5.5f, list55);
532
		m.put(6.5f, list65);
533
		for (Map.Entry<Float, List<Integer>> itemsListEntry : m.entrySet()) {
534
			Scheme s1 = getScheme();
535
			s1.setAmount(itemsListEntry.getKey());
536
			schemeRepository.persist(s1);
25034 amit.gupta 537
			for (Integer itemId : itemsListEntry.getValue()) {
25021 amit.gupta 538
				SchemeItem schemeItem = new SchemeItem();
539
				schemeItem.setItemId(itemId);
540
				schemeItem.setSchemeId(s1.getId());
541
				schemeItemRepository.persist(schemeItem);
542
			}
543
		}
25034 amit.gupta 544
 
25021 amit.gupta 545
	}
546
 
547
	private Scheme getScheme() {
548
		Scheme s = new Scheme();
549
		s.setName("List Price Margin");
550
		s.setDescription("List Price Margin");
551
		s.setActiveTimestamp(null);
552
		s.setStartDateTime(LocalDate.of(2019, 6, 1).atStartOfDay());
553
		s.setEndDateTime(LocalDate.of(2019, 7, 1).atStartOfDay());
554
		s.setAmountType(AmountType.PERCENTAGE);
555
		s.setCreateTimestamp(LocalDateTime.now());
556
		s.setExpireTimestamp(null);
557
		s.setCreatedBy(175120474);
558
		return s;
559
	}
560
 
24957 amit.gupta 561
	public void findMismatchesInIndent() throws Exception {
562
		List<Order> allInProcessOrders = orderRepository.selectAllOrder(OrderStatus.SUBMITTED_FOR_PROCESSING);
24967 amit.gupta 563
 
25021 amit.gupta 564
		Map<String, Integer> lineItemWhQtyMap = allInProcessOrders.stream()
25734 amit.gupta 565
				.collect(Collectors.groupingBy(y -> y.getLineItem().getItemId() + "-" + y.getFulfilmentWarehouseId(),
24967 amit.gupta 566
						Collectors.summingInt(y -> y.getLineItem().getQuantity())));
25021 amit.gupta 567
 
568
		lineItemWhQtyMap.forEach((key, value) -> {
569
 
24967 amit.gupta 570
			int itemId = Integer.parseInt(key.split("-")[0]);
571
			int warehouseId = Integer.parseInt(key.split("-")[1]);
25021 amit.gupta 572
			System.out.printf("%d\t%d\t%d\n", itemId, warehouseId, value);
573
			SaholicInventorySnapshot cis = saholicInventorySnapshotRepository.selectByWarehouseIdandItemId(warehouseId,
574
					itemId);
575
			if (cis == null) {
24970 amit.gupta 576
				cis = new SaholicInventorySnapshot();
577
				cis.setItemId(itemId);
578
				cis.setWarehouseId(warehouseId);
579
				cis.setAvailability(0);
580
				saholicInventorySnapshotRepository.persist(cis);
581
			}
24967 amit.gupta 582
			cis.setReserved(value);
583
		});
24953 amit.gupta 584
	}
585
 
25034 amit.gupta 586
	public void fixSchemePayouts() throws Exception {
25524 amit.gupta 587
		LOGGER.info("In fix scheme Payouts");
25522 amit.gupta 588
		LocalDateTime startDate = LocalDate.of(2019, 9, 1).atStartOfDay();
589
		List<SchemeInOut> sios = schemeInOutRepository.selectAllByCreateDate(startDate, LocalDateTime.now());
25530 amit.gupta 590
 
25034 amit.gupta 591
		for (SchemeInOut sio : sios) {
25530 amit.gupta 592
			if (sio.getSchemeId() != 347) {
25523 amit.gupta 593
				LOGGER.info("Skipping {}", sio.getSchemeId());
25522 amit.gupta 594
				continue;
595
			}
25043 amit.gupta 596
			genericRepository.delete(sio);
25522 amit.gupta 597
			InventoryItem ii = inventoryItemRepository.selectById(sio.getInventoryItemId());
598
			UserWallet userWallet = userWalletRepository.selectByRetailerId(ii.getFofoId());
599
			Scheme scheme = schemeRepository.selectById(sio.getSchemeId());
600
			if (scheme.getType().equals(SchemeType.IN)) {
601
				List<UserWalletHistory> historyList = userWalletHistoryRepository
602
						.selectAllByreferenceIdandreferenceType(ii.getPurchaseId(), WalletReferenceType.SCHEME_IN);
603
				for (UserWalletHistory uwh : historyList) {
25530 amit.gupta 604
					if (uwh.getTimestamp().isAfter(startDate)) {
25522 amit.gupta 605
						genericRepository.delete(uwh);
606
						userWallet.setAmount(userWallet.getAmount() - uwh.getAmount());
607
					}
608
				}
609
			} else {
610
				List<ScanRecord> scanRecords = scanRecordRepository.selectByInventoryItemId(ii.getId());
611
				int orderId = scanRecords.get(0).getOrderId();
612
				List<UserWalletHistory> historyList = userWalletHistoryRepository
613
						.selectAllByreferenceIdandreferenceType(orderId, WalletReferenceType.SCHEME_OUT);
614
				for (UserWalletHistory uwh : historyList) {
25530 amit.gupta 615
					if (uwh.getTimestamp().isAfter(startDate)) {
25522 amit.gupta 616
						userWallet.setAmount(userWallet.getAmount() - uwh.getAmount());
617
						genericRepository.delete(uwh);
618
					}
619
				}
620
				List<UserWalletHistory> historyListBroken = userWalletHistoryRepository
25530 amit.gupta 621
						.selectAllByreferenceIdandreferenceType(ii.getPurchaseId(), WalletReferenceType.SCHEME_OUT);
25522 amit.gupta 622
				for (UserWalletHistory uwh : historyListBroken) {
25530 amit.gupta 623
					if (uwh.getTimestamp().isAfter(startDate)) {
25522 amit.gupta 624
						genericRepository.delete(uwh);
625
						userWallet.setAmount(userWallet.getAmount() - uwh.getAmount());
626
					}
627
				}
628
			}
629
 
25530 amit.gupta 630
			// System.out.println("Total Amount Rolled Back is " + totalRollbackAmount);
25516 amit.gupta 631
		}
25589 amit.gupta 632
		scheduledTasks.processScheme(startDate, startDate.plusDays(10), true);
25030 amit.gupta 633
	}
25530 amit.gupta 634
 
635
	public void fixWallet() throws Exception {
636
		List<FofoStore> fofoStores = fofoStoreRepository.selectAll();
25536 amit.gupta 637
		System.out.println("id\tcode\tactive\tname\tcity\tstate\twallet amount\tsum\twallet amount-sum");
25530 amit.gupta 638
		for (FofoStore fofoStore : fofoStores) {
639
			UserWallet uw = userWalletRepository.selectByRetailerId(fofoStore.getId());
640
			User user = userRepository.selectById(fofoStore.getId());
25749 amit.gupta 641
			if (user == null) {
25533 amit.gupta 642
				LOGGER.info("store does not exist", fofoStore.getCode());
25535 amit.gupta 643
				continue;
25533 amit.gupta 644
			}
25536 amit.gupta 645
			Address address = null;
646
			try {
647
				address = addressRepository.selectById(user.getAddressId());
25749 amit.gupta 648
			} catch (Exception e) {
25536 amit.gupta 649
				LOGGER.info("Could not find address for Store", fofoStore.getCode());
650
				address = new Address();
651
			}
25539 amit.gupta 652
			double sum = userWalletHistoryRepository.selectSumByWallet(uw.getId());
25749 amit.gupta 653
			int calculated = (int) sum;
654
			System.out.printf("%d\t%s\t%b\t%s\t%s\t%s\t%d\t%d\t%d%n", fofoStore.getId(), fofoStore.getCode(),
655
					fofoStore.isActive(), address.getName(), address.getCity(), address.getState(), uw.getAmount(),
656
					calculated, uw.getAmount() - calculated);
25530 amit.gupta 657
		}
658
	}
25749 amit.gupta 659
 
25734 amit.gupta 660
	public void changeWarehouse() throws Exception {
661
		transactionService.moveWarehouses();
662
	}
25749 amit.gupta 663
 
664
	public void mailDashboardScreenshots() throws Exception {
665
		System.setProperty("webdriver.chrome.driver", "/usr/bin/chromedriver");
666
 
25752 amit.gupta 667
		ChromeOptions options = new ChromeOptions();
668
		options.addArguments("--headless");
669
		options.addArguments("--no-sandbox");
670
		options.addArguments("start-maximized");
671
		options.addArguments("disable-infobars");
672
		options.addArguments("--disable-extensions");
673
 
25753 amit.gupta 674
		WebDriver driver = new ChromeDriver(options);
25774 amit.gupta 675
		driver.manage().window().setSize(new Dimension(1600, 900));
25749 amit.gupta 676
		driver.manage().window().maximize();
25752 amit.gupta 677
		// Deleting all the cookies
25749 amit.gupta 678
		driver.manage().deleteAllCookies();
25752 amit.gupta 679
		// Specifiying pageLoadTimeout and Implicit wait
25749 amit.gupta 680
		driver.manage().timeouts().pageLoadTimeout(40, TimeUnit.SECONDS);
681
		driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
25752 amit.gupta 682
 
25749 amit.gupta 683
		Map<String, Set<Integer>> authUserPartnerIdMapping = csService.getAuthUserPartnerIdMapping();
684
		Set<Integer> allPartners = new HashSet<>();
25765 amit.gupta 685
		Map<Integer, File> partnerSnapshotMap = new HashMap<>();
25752 amit.gupta 686
		authUserPartnerIdMapping.values().stream().forEach(x -> allPartners.addAll(x));
25749 amit.gupta 687
		System.out.println(allPartners.size());
25752 amit.gupta 688
		for (int fofoId : allPartners) {
25749 amit.gupta 689
			driver.get("https://partners.smartdukaan.com/12dashboard34?fofoId=" + fofoId);
25765 amit.gupta 690
			File file = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
691
			partnerSnapshotMap.put(fofoId, file);
25752 amit.gupta 692
 
25749 amit.gupta 693
		}
25752 amit.gupta 694
		for (Map.Entry<String, Set<Integer>> entry : authUserPartnerIdMapping.entrySet()) {
25749 amit.gupta 695
			String email = entry.getKey();
25996 amit.gupta 696
			LOGGER.info("Sending mail start to {}", email);
25749 amit.gupta 697
			Set<Integer> partnerIds = entry.getValue();
698
			StringBuffer body = new StringBuffer();
25769 amit.gupta 699
			Map<Integer, File> emailSnapshotMap = new HashMap<>();
25752 amit.gupta 700
			for (int fofoId : partnerIds) {
25769 amit.gupta 701
				body.append(String.format("<br/><img src=\"cid:%d\"/>", fofoId));
702
				emailSnapshotMap.put(fofoId, partnerSnapshotMap.get(fofoId));
25749 amit.gupta 703
			}
25837 amit.gupta 704
			Utils.sendEmbeddedHtmlMail(mailSender, new String[] { email }, new String[] {},
25752 amit.gupta 705
					String.format("Franchise Screenshots - %s", FormattingUtils.formatDate(LocalDateTime.now())),
25837 amit.gupta 706
					body.toString(), emailSnapshotMap);
25996 amit.gupta 707
			LOGGER.info("Sent mail to {}", email);
25749 amit.gupta 708
		}
709
		driver.quit();
710
	}
26033 amit.gupta 711
 
712
	//Rollout prebooking orders amount in case the order is grned.
713
	public void pbfix() throws ProfitMandiBusinessException {
714
		List<Item> items = itemRepository.selectAllByCatalogItemId(1022304);
715
		for(Item item : items) {
716
			List<InventoryItem> inventoryItems = inventoryItemRepository.selectByItemId(item.getId(), 0, 500);
717
			for(InventoryItem inventoryItem : inventoryItems) {
718
				List<PrebookingOrder> prebookingOrders = prebookingOrderRepository
719
						.selectByFofoIdAndCatalogIds(inventoryItem.getFofoId(), item.getCatalogItemId())
26035 amit.gupta 720
						.stream().collect(Collectors.toList());
26033 amit.gupta 721
				if(prebookingOrders.size() > 0) {
722
						purchaseService.sendPrebookingNotifyMessage(prebookingOrders.get(0));
723
				}
724
				//inventoryItem.getFofoId()
725
			}
726
		}
727
		throw new ProfitMandiBusinessException("", "", "");
728
		//prebookingOrderRepository.select
729
		// TODO Auto-generated method stub
730
 
731
	}
25043 amit.gupta 732
}
733
 
734
//7015845171