Subversion Repositories SmartDukaan

Rev

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

Rev 23650 Rev 23654
Line 3... Line 3...
3
import java.io.ByteArrayInputStream;
3
import java.io.ByteArrayInputStream;
4
import java.io.ByteArrayOutputStream;
4
import java.io.ByteArrayOutputStream;
5
import java.io.InputStream;
5
import java.io.InputStream;
6
import java.time.LocalDateTime;
6
import java.time.LocalDateTime;
7
import java.time.temporal.ChronoUnit;
7
import java.time.temporal.ChronoUnit;
-
 
8
import java.util.Arrays;
8
import java.util.HashMap;
9
import java.util.HashMap;
9
import java.util.HashSet;
10
import java.util.HashSet;
10
import java.util.List;
11
import java.util.List;
11
import java.util.Map;
12
import java.util.Map;
12
import java.util.Set;
13
import java.util.Set;
Line 24... Line 25...
24
import org.springframework.http.MediaType;
25
import org.springframework.http.MediaType;
25
import org.springframework.http.ResponseEntity;
26
import org.springframework.http.ResponseEntity;
26
import org.springframework.stereotype.Controller;
27
import org.springframework.stereotype.Controller;
27
import org.springframework.transaction.annotation.Transactional;
28
import org.springframework.transaction.annotation.Transactional;
28
import org.springframework.ui.Model;
29
import org.springframework.ui.Model;
-
 
30
import org.springframework.web.bind.annotation.PathVariable;
29
import org.springframework.web.bind.annotation.RequestBody;
31
import org.springframework.web.bind.annotation.RequestBody;
30
import org.springframework.web.bind.annotation.RequestMapping;
32
import org.springframework.web.bind.annotation.RequestMapping;
31
import org.springframework.web.bind.annotation.RequestMethod;
33
import org.springframework.web.bind.annotation.RequestMethod;
32
import org.springframework.web.bind.annotation.RequestParam;
34
import org.springframework.web.bind.annotation.RequestParam;
33
 
35
 
34
import com.spice.profitmandi.common.enumuration.SearchType;
36
import com.spice.profitmandi.common.enumuration.SearchType;
35
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
37
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
36
import com.spice.profitmandi.common.model.CartFofo;
38
import com.spice.profitmandi.common.model.CartFofo;
37
import com.spice.profitmandi.common.model.CreateOrderRequest;
39
import com.spice.profitmandi.common.model.CreateOrderRequest;
-
 
40
import com.spice.profitmandi.common.model.CreditNotePdfModel;
38
import com.spice.profitmandi.common.model.CustomCustomer;
41
import com.spice.profitmandi.common.model.CustomCustomer;
39
import com.spice.profitmandi.common.model.FoiBadReturnRequest;
42
import com.spice.profitmandi.common.model.FoiBadReturnRequest;
40
import com.spice.profitmandi.common.model.PdfModel;
43
import com.spice.profitmandi.common.model.PdfModel;
41
import com.spice.profitmandi.common.model.PriceModel;
44
import com.spice.profitmandi.common.model.PriceModel;
42
import com.spice.profitmandi.common.model.ProfitMandiConstants;
45
import com.spice.profitmandi.common.model.ProfitMandiConstants;
Line 48... Line 51...
48
import com.spice.profitmandi.dao.entity.dtr.InsurancePolicy;
51
import com.spice.profitmandi.dao.entity.dtr.InsurancePolicy;
49
import com.spice.profitmandi.dao.entity.dtr.InsuranceProvider;
52
import com.spice.profitmandi.dao.entity.dtr.InsuranceProvider;
50
import com.spice.profitmandi.dao.entity.dtr.PaymentOptionTransaction;
53
import com.spice.profitmandi.dao.entity.dtr.PaymentOptionTransaction;
51
import com.spice.profitmandi.dao.entity.fofo.Customer;
54
import com.spice.profitmandi.dao.entity.fofo.Customer;
52
import com.spice.profitmandi.dao.entity.fofo.CustomerAddress;
55
import com.spice.profitmandi.dao.entity.fofo.CustomerAddress;
-
 
56
import com.spice.profitmandi.dao.entity.fofo.CustomerCreditNote;
-
 
57
import com.spice.profitmandi.dao.entity.fofo.CustomerReturnItem;
53
import com.spice.profitmandi.dao.entity.fofo.FofoLineItem;
58
import com.spice.profitmandi.dao.entity.fofo.FofoLineItem;
54
import com.spice.profitmandi.dao.entity.fofo.FofoOrder;
59
import com.spice.profitmandi.dao.entity.fofo.FofoOrder;
55
import com.spice.profitmandi.dao.entity.fofo.FofoOrderItem;
60
import com.spice.profitmandi.dao.entity.fofo.FofoOrderItem;
56
import com.spice.profitmandi.dao.entity.fofo.PaymentOption;
61
import com.spice.profitmandi.dao.entity.fofo.PaymentOption;
57
import com.spice.profitmandi.dao.entity.fofo.PrebookingOrderItem;
62
import com.spice.profitmandi.dao.entity.fofo.PrebookingOrderItem;
Line 86... Line 91...
86
 
91
 
87
	@Autowired
92
	@Autowired
88
	private CustomerRepository customerRepository;
93
	private CustomerRepository customerRepository;
89
 
94
 
90
	@Autowired
95
	@Autowired
-
 
96
	private CustomerReturnItemRepository customerReturnItemRepository;
-
 
97
	
-
 
98
	@Autowired
91
	private FofoOrderItemRepository fofoOrderItemRepository;
99
	private FofoOrderItemRepository fofoOrderItemRepository;
92
	
100
	
93
	@Autowired
101
	@Autowired
94
	private FofoLineItemRepository fofoLineItemRepository;
102
	private FofoLineItemRepository fofoLineItemRepository;
95
 
103
 
Line 247... Line 255...
247
	@RequestMapping(value = "/saleDetails", method = RequestMethod.GET)
255
	@RequestMapping(value = "/saleDetails", method = RequestMethod.GET)
248
	public String getSaleDetails(HttpServletRequest request, @RequestParam(name = ProfitMandiConstants.ORDER_ID) int orderId, Model model) throws Exception {
256
	public String getSaleDetails(HttpServletRequest request, @RequestParam(name = ProfitMandiConstants.ORDER_ID) int orderId, Model model) throws Exception {
249
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
257
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
250
		
258
		
251
		FofoOrder fofoOrder = fofoOrderRepository.selectByFofoIdAndOrderId(fofoDetails.getFofoId(), orderId);
259
		FofoOrder fofoOrder = fofoOrderRepository.selectByFofoIdAndOrderId(fofoDetails.getFofoId(), orderId);
252
		List<FofoOrderItem> fofoLineItems = fofoOrderItemRepository.selectByOrderId(fofoOrder.getId());
260
		List<FofoOrderItem> fofoOrderItems = fofoOrderItemRepository.selectByOrderId(fofoOrder.getId());
253
		CustomerAddress customerAddress = customerAddressRepository.selectById(fofoOrder.getCustomerAddressId());
261
		CustomerAddress customerAddress = customerAddressRepository.selectById(fofoOrder.getCustomerAddressId());
254
		List<PaymentOptionTransaction> paymentOptionTransactions = fofoOrderPaymentOptionRepository.selectByReferenceIdAndType(fofoOrder.getId(), PaymentOptionReferenceType.ORDER);
262
		List<PaymentOptionTransaction> paymentOptionTransactions = fofoOrderPaymentOptionRepository.selectByReferenceIdAndType(fofoOrder.getId(), PaymentOptionReferenceType.ORDER);
255
		Map<Integer, PaymentOption> paymentOptionIdPaymentOptionMap = this.paymentOptionIdPaymentOptionMap(paymentOptionTransactions);
263
		Map<Integer, PaymentOption> paymentOptionIdPaymentOptionMap = this.paymentOptionIdPaymentOptionMap(paymentOptionTransactions);
256
		List<InsurancePolicy> insurancePolicies = insurancePolicyRepository.selectByRetailerIdInvoiceNumber(fofoOrder.getFofoId(), fofoOrder.getInvoiceNumber());
264
		List<InsurancePolicy> insurancePolicies = insurancePolicyRepository.selectByRetailerIdInvoiceNumber(fofoOrder.getFofoId(), fofoOrder.getInvoiceNumber());
257
		this.addInsuranceProvider(insurancePolicies);
265
		this.addInsuranceProvider(insurancePolicies);
258
		List<PrebookingOrderItem> prebookingOrderItems = prebookingOrderItemRepository.selectByOrderId(orderId);
266
		List<PrebookingOrderItem> prebookingOrderItems = prebookingOrderItemRepository.selectByOrderId(orderId);
259
		Map<Integer, PrebookingOrderItem> itemIdPrebookingOrderItemMap = this.prebookingOrderItemToItemIdPrebookingOrderItem(prebookingOrderItems);
267
		Map<Integer, PrebookingOrderItem> itemIdPrebookingOrderItemMap = this.prebookingOrderItemToItemIdPrebookingOrderItem(prebookingOrderItems);
260
		Map<Integer, Item> itemsMap = fofoLineItems.stream().collect(Collectors.toMap(x->x.getItemId(), x->{
268
		Map<Integer, Item> itemsMap = fofoOrderItems.stream().collect(Collectors.toMap(x->x.getItemId(), x->{
261
			try {
269
			try {
262
				return itemRepository.selectById(x.getItemId());
270
				return itemRepository.selectById(x.getItemId());
263
			} catch (ProfitMandiBusinessException e) {
271
			} catch (ProfitMandiBusinessException e) {
264
				// TODO Auto-generated catch block
272
				// TODO Auto-generated catch block
265
				return null;
273
				return null;
266
			}
274
			}
267
		}));
275
		}));
268
		model.addAttribute("fofoOrder", fofoOrder);
-
 
269
		model.addAttribute("itemsMap", itemsMap);
-
 
270
		Map<Integer, Set<FofoLineItem>>fofoOrderItemIdLineItemMap = fofoLineItems.stream().collect(Collectors.toMap(FofoOrderItem::getId, 
276
		Map<Integer, Set<FofoLineItem>>fofoOrderItemIdLineItemMap = fofoOrderItems.stream().collect(Collectors.toMap(FofoOrderItem::getId, 
271
				FofoOrderItem::getFofoLineItems));
277
				FofoOrderItem::getFofoLineItems));
-
 
278
 
-
 
279
		Map<Integer, List<CustomerReturnItem>> foiIdCustomerReturnInventoryItemsMap = fofoOrderItems.stream().collect(Collectors.toMap(foi->foi.getId(),
-
 
280
				foi->customerReturnItemRepository.selectAllByOrderItemId(foi.getId())));
-
 
281
 
-
 
282
		Map<Integer, Integer> inventoryItemBilledQtyMap = new HashMap<>();
-
 
283
		
-
 
284
		
-
 
285
		
-
 
286
		for(FofoOrderItem foi : fofoOrderItems) {
-
 
287
			for(FofoLineItem fli : foi.getFofoLineItems()) {
-
 
288
				inventoryItemBilledQtyMap.put(fli.getInventoryItemId(), fli.getQuantity());
-
 
289
			}
272
		model.addAttribute("fofoOrderItemIdLineItemMap", StringUtils.toString(fofoOrderItemIdLineItemMap));
290
			List<CustomerReturnItem> customerReturnItems = customerReturnItemRepository.selectAllByOrderItemId(foi.getId());
-
 
291
			for(CustomerReturnItem customerReturnItem : customerReturnItems) {
-
 
292
				inventoryItemBilledQtyMap.put(customerReturnItem.getInventoryItemId(), inventoryItemBilledQtyMap.get(customerReturnItem.getInventoryItemId()) - 1);
-
 
293
			}
-
 
294
		}
-
 
295
		
273
		LOGGER.info("fofoOrderItemIdLineItemMap {}", fofoOrderItemIdLineItemMap);
296
		LOGGER.info("fofoOrderItemIdLineItemMap {}", fofoOrderItemIdLineItemMap);
-
 
297
		model.addAttribute("fofoOrder", fofoOrder);
-
 
298
		model.addAttribute("itemsMap", itemsMap);
-
 
299
		model.addAttribute("fofoOrderItemIdLineItemsMap", StringUtils.toString(fofoOrderItemIdLineItemMap));
-
 
300
		model.addAttribute("foiIdCustomerReturnInventoryItemsMap",StringUtils.toString(foiIdCustomerReturnInventoryItemsMap));
274
		model.addAttribute("fofoLineItems", fofoLineItems);
301
		model.addAttribute("fofoOrderItems", fofoOrderItems);
-
 
302
		model.addAttribute("inventoryItemBilledQtyMap", StringUtils.toString(inventoryItemBilledQtyMap));
275
		model.addAttribute("customerBillingAddress", orderService.getBillingAddress(customerAddress));
303
		model.addAttribute("customerBillingAddress", orderService.getBillingAddress(customerAddress));
276
		model.addAttribute("customerBillingAddressObj", customerAddress);
304
		model.addAttribute("customerBillingAddressObj", customerAddress);
277
		model.addAttribute("paymentOptionTransactions", paymentOptionTransactions);
305
		model.addAttribute("paymentOptionTransactions", paymentOptionTransactions);
278
		model.addAttribute("paymentOptionIdPaymentOptionMap", paymentOptionIdPaymentOptionMap);
306
		model.addAttribute("paymentOptionIdPaymentOptionMap", paymentOptionIdPaymentOptionMap);
279
		model.addAttribute("insurancePolicies", insurancePolicies);
307
		model.addAttribute("insurancePolicies", insurancePolicies);
Line 366... Line 394...
366
		LOGGER.info("Order has been created successfully...");
394
		LOGGER.info("Order has been created successfully...");
367
		return "redirect:/get-order/?orderId="+fofoOrderId;
395
		return "redirect:/get-order/?orderId="+fofoOrderId;
368
	}
396
	}
369
	
397
	
370
	@RequestMapping(value = "/order/bad_return", method = RequestMethod.POST)
398
	@RequestMapping(value = "/order/bad_return", method = RequestMethod.POST)
371
	public String badReturn(HttpServletRequest request, @RequestBody FoiBadReturnRequest foiBadReturnRequest, Model model)  throws ProfitMandiBusinessException{
399
	public ResponseEntity<?> badReturn(HttpServletRequest request, @RequestBody FoiBadReturnRequest foiBadReturnRequest, Model model)  throws ProfitMandiBusinessException{
372
		LOGGER.info("request at uri {} body {}", request.getRequestURI(), foiBadReturnRequest);
400
		LOGGER.info("request at uri {} body {}", request.getRequestURI(), foiBadReturnRequest);
373
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
401
		LoginDetails fofoDetails = cookiesProcessor.getCookiesObject(request);
374
		orderService.badReturn(fofoDetails.getFofoId(), foiBadReturnRequest);
402
		CustomerCreditNote custmoerCreditNote = orderService.badReturn(fofoDetails.getFofoId(), foiBadReturnRequest);
375
		return "";
403
		return responseSender.ok(custmoerCreditNote.getId());
376
	}
404
	}
377
 
405
 
378
 
406
 
379
	@RequestMapping(value = "/generateInvoice")
407
	@RequestMapping(value = "/generateInvoice")
380
	public ResponseEntity<?> generateInvoice(HttpServletRequest request, HttpServletResponse response, @RequestParam(name = ProfitMandiConstants.ORDER_ID) int orderId) throws ProfitMandiBusinessException{
408
	public ResponseEntity<?> generateInvoice(HttpServletRequest request, HttpServletResponse response, @RequestParam(name = ProfitMandiConstants.ORDER_ID) int orderId) throws ProfitMandiBusinessException{
Line 406... Line 434...
406
		model.addAllAttributes(map);
434
		model.addAllAttributes(map);
407
		
435
		
408
		return "sale-history";
436
		return "sale-history";
409
	}
437
	}
410
	
438
	
-
 
439
	@RequestMapping(value="/credit-note/{creditNoteId}") 
-
 
440
	public ResponseEntity<?> downloadCreditNote(HttpServletRequest request, @PathVariable int creditNoteId) throws ProfitMandiBusinessException	{
-
 
441
		CreditNotePdfModel creditNotePdfModel = orderService.getCreditNotePdfModel(creditNoteId);
-
 
442
		ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
-
 
443
		PdfUtils.generateAndWriteCustomerCreditNotes(Arrays.asList(creditNotePdfModel), byteArrayOutputStream);
-
 
444
		LOGGER.info("Pdf Stream length {}", byteArrayOutputStream.toByteArray().length);
-
 
445
        final HttpHeaders headers=new HttpHeaders();
-
 
446
        headers.setContentType(MediaType.APPLICATION_PDF);
-
 
447
        headers.set("Content-disposition", "inline; filename=invoice-" + creditNotePdfModel.getCreditNoteNumber() + ".pdf");
-
 
448
        headers.setContentLength(byteArrayOutputStream.toByteArray().length);
-
 
449
        final InputStream inputStream=new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
-
 
450
        final InputStreamResource inputStreamResource=new InputStreamResource(inputStream);
-
 
451
        return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
-
 
452
	}
-
 
453
	
411
	
454
	
412
	@RequestMapping(value = "/getPaginatedSaleHistory")
455
	@RequestMapping(value = "/getPaginatedSaleHistory")
413
	public String getSaleHistoryPaginated(HttpServletRequest request, @RequestParam(name = "searchValue", defaultValue="") String searchValue, @RequestParam(name = "searchType", defaultValue = "") SearchType searchType, @RequestParam(name = ProfitMandiConstants.START_TIME, required = false) String startTimeString, @RequestParam(name = ProfitMandiConstants.END_TIME, required = false) String endTimeString, @RequestParam(name = "offset", defaultValue = "0") int offset, @RequestParam(name = "limit", defaultValue="10") int limit, Model model) throws ProfitMandiBusinessException{
456
	public String getSaleHistoryPaginated(HttpServletRequest request, @RequestParam(name = "searchValue", defaultValue="") String searchValue, @RequestParam(name = "searchType", defaultValue = "") SearchType searchType, @RequestParam(name = ProfitMandiConstants.START_TIME, required = false) String startTimeString, @RequestParam(name = ProfitMandiConstants.END_TIME, required = false) String endTimeString, @RequestParam(name = "offset", defaultValue = "0") int offset, @RequestParam(name = "limit", defaultValue="10") int limit, Model model) throws ProfitMandiBusinessException{
414
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
457
		LoginDetails loginDetails = cookiesProcessor.getCookiesObject(request);
415
		
458