| 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 |
|