| Line 75... |
Line 75... |
| 75 |
import com.spice.profitmandi.dao.repository.fofo.InventoryItemRepository;
|
75 |
import com.spice.profitmandi.dao.repository.fofo.InventoryItemRepository;
|
| 76 |
import com.spice.profitmandi.dao.repository.fofo.InvoiceNumberGenerationSequenceRepository;
|
76 |
import com.spice.profitmandi.dao.repository.fofo.InvoiceNumberGenerationSequenceRepository;
|
| 77 |
import com.spice.profitmandi.dao.repository.fofo.PaymentOptionRepository;
|
77 |
import com.spice.profitmandi.dao.repository.fofo.PaymentOptionRepository;
|
| 78 |
import com.spice.profitmandi.dao.repository.fofo.ScanRecordRepository;
|
78 |
import com.spice.profitmandi.dao.repository.fofo.ScanRecordRepository;
|
| 79 |
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
|
79 |
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
|
| 80 |
import com.spice.profitmandi.dao.repository.transaction.OrderRepositoryImpl;
|
- |
|
| 81 |
import com.spice.profitmandi.dao.repository.user.AddressRepository;
|
80 |
import com.spice.profitmandi.dao.repository.user.AddressRepository;
|
| 82 |
import com.spice.profitmandi.web.model.FofoDetails;
|
81 |
import com.spice.profitmandi.web.model.FofoDetails;
|
| 83 |
import com.spice.profitmandi.web.request.CreateOrderRequest;
|
82 |
import com.spice.profitmandi.web.request.CreateOrderRequest;
|
| 84 |
import com.spice.profitmandi.web.request.CustomPaymentOption;
|
83 |
import com.spice.profitmandi.web.request.CustomPaymentOption;
|
| 85 |
import com.spice.profitmandi.web.response.ItemIdQuantityAvailability;
|
84 |
import com.spice.profitmandi.web.response.ItemIdQuantityAvailability;
|
| Line 682... |
Line 681... |
| 682 |
|
681 |
|
| 683 |
|
682 |
|
| 684 |
@RequestMapping(value = "/generateInvoice")
|
683 |
@RequestMapping(value = "/generateInvoice")
|
| 685 |
public ResponseEntity<?> generateInvoice(HttpServletRequest request, HttpServletResponse response, @RequestParam(name = ProfitMandiConstants.ORDER_ID) int orderId) throws Throwable{
|
684 |
public ResponseEntity<?> generateInvoice(HttpServletRequest request, HttpServletResponse response, @RequestParam(name = ProfitMandiConstants.ORDER_ID) int orderId) throws Throwable{
|
| 686 |
LOGGER.info("Request received at url {} with params {} ", request.getRequestURI(), request.getParameterMap());
|
685 |
LOGGER.info("Request received at url {} with params {} ", request.getRequestURI(), request.getParameterMap());
|
| 687 |
FofoDetails fofoDetails;
|
- |
|
| 688 |
try {
|
- |
|
| 689 |
fofoDetails = cookiesFetcher.getCookiesObject(request);
|
686 |
FofoDetails fofoDetails = cookiesFetcher.getCookiesObject(request);
|
| 690 |
} catch (ProfitMandiBusinessException e) {
|
- |
|
| 691 |
return null;
|
- |
|
| 692 |
}
|
687 |
|
| 693 |
FofoOrder fofoOrder = fofoOrderRepository.selectByFofoIdAndOrderId(fofoDetails.getFofoId(), orderId);
|
688 |
FofoOrder fofoOrder = fofoOrderRepository.selectByFofoIdAndOrderId(fofoDetails.getFofoId(), orderId);
|
| 694 |
PdfModel pdfModel = new PdfModel();
|
689 |
PdfModel pdfModel = new PdfModel();
|
| 695 |
pdfModel.setAuther("profitmandi");
|
690 |
pdfModel.setAuther("profitmandi");
|
| 696 |
pdfModel.setTitle("Retailer Invoice");
|
691 |
pdfModel.setTitle("Retailer Invoice");
|
| 697 |
Customer customer = customerRepository.selectById(fofoOrder.getCustomerId());
|
692 |
Customer customer = customerRepository.selectById(fofoOrder.getCustomerId());
|
| Line 702... |
Line 697... |
| 702 |
CustomerAddress customerAddress = customerAddressRepository.selectById(fofoOrder.getCustomerAddressId());
|
697 |
CustomerAddress customerAddress = customerAddressRepository.selectById(fofoOrder.getCustomerAddressId());
|
| 703 |
customCustomer.setAddress(this.createCustomAddress(customerAddress));
|
698 |
customCustomer.setAddress(this.createCustomAddress(customerAddress));
|
| 704 |
pdfModel.setCustomer(customCustomer);
|
699 |
pdfModel.setCustomer(customCustomer);
|
| 705 |
pdfModel.setInvoiceNumber(fofoOrder.getInvoiceNumber());
|
700 |
pdfModel.setInvoiceNumber(fofoOrder.getInvoiceNumber());
|
| 706 |
pdfModel.setTotalAmount(fofoOrder.getTotalAmount());
|
701 |
pdfModel.setTotalAmount(fofoOrder.getTotalAmount());
|
| 707 |
|
702 |
|
| 708 |
Retailer retailer = retailerRepository.selectById(fofoDetails.getFofoId());
|
703 |
Retailer retailer = retailerRepository.selectById(fofoDetails.getFofoId());
|
| 709 |
User user = userRepository.selectById(userAccountRepository.selectUserIdByRetailerId(retailer.getId()));
|
704 |
User user = userRepository.selectById(userAccountRepository.selectUserIdByRetailerId(retailer.getId()));
|
| 710 |
CustomRetailer customRetailer = new CustomRetailer();
|
705 |
CustomRetailer customRetailer = new CustomRetailer();
|
| 711 |
customRetailer.setBusinessName(retailer.getName());
|
706 |
customRetailer.setBusinessName(retailer.getName());
|
| 712 |
customRetailer.setMobileNumber(user.getMobileNumber());
|
707 |
customRetailer.setMobileNumber(user.getMobileNumber());
|
| 713 |
customRetailer.setTinNumber(retailer.getNumber());
|
708 |
customRetailer.setTinNumber(retailer.getNumber());
|
| 714 |
Address retailerAddress = addressRepository.selectById(retailerRegisteredAddressRepository.selectAddressIdByRetailerId(retailer.getId()));
|
709 |
Address retailerAddress = addressRepository.selectById(retailerRegisteredAddressRepository.selectAddressIdByRetailerId(retailer.getId()));
|
| 715 |
customRetailer.setAddress(this.createCustomAddress(retailerAddress));
|
710 |
customRetailer.setAddress(this.createCustomAddress(retailerAddress));
|
| 716 |
pdfModel.setRetailer(customRetailer);
|
711 |
pdfModel.setRetailer(customRetailer);
|
| 717 |
List<FofoLineItem> fofoLineItems = fofoLineItemRepository.selectByOrderId(fofoOrder.getId());
|
712 |
List<FofoLineItem> fofoLineItems = fofoLineItemRepository.selectByOrderId(fofoOrder.getId());
|
| 718 |
|
713 |
|
| 719 |
Set<CustomFofoOrderItem> customerFofoOrderItems = new HashSet<>();
|
714 |
Set<CustomFofoOrderItem> customerFofoOrderItems = new HashSet<>();
|
| 720 |
for(FofoLineItem fofoLineItem : fofoLineItems){
|
715 |
for(FofoLineItem fofoLineItem : fofoLineItems){
|
| 721 |
CustomFofoOrderItem customFofoOrderItem = new CustomFofoOrderItem();
|
716 |
CustomFofoOrderItem customFofoOrderItem = new CustomFofoOrderItem();
|
| - |
|
717 |
float totalTaxRate = fofoLineItem.getIgstRate() + fofoLineItem.getSgstRate() + fofoLineItem.getCgstRate();
|
| - |
|
718 |
float taxableSellingPrice = fofoLineItem.getSellingPrice() / (1 + totalTaxRate / 100);
|
| - |
|
719 |
|
| 722 |
customFofoOrderItem.setAmount(fofoLineItem.getQuantity() * fofoLineItem.getSellingPrice());
|
720 |
customFofoOrderItem.setAmount(fofoLineItem.getQuantity() * taxableSellingPrice);
|
| 723 |
customFofoOrderItem.setDescription(fofoLineItem.getBrand() + " " + fofoLineItem.getModelName() + " " + fofoLineItem.getModelNumber() + " " + fofoLineItem.getColor());
|
721 |
customFofoOrderItem.setDescription(fofoLineItem.getBrand() + " " + fofoLineItem.getModelName() + " " + fofoLineItem.getModelNumber() + " " + fofoLineItem.getColor());
|
| - |
|
722 |
//float taxableTotalAmount = customFofoOrderItem.getAmount() / (1 + (totalTaxRate / 100));
|
| 724 |
float itemTotal = customFofoOrderItem.getAmount();
|
723 |
//float itemTotal = customFofoOrderItem.getAmount() + taxableAmount;
|
| - |
|
724 |
//LOGGER.info("totalTaxRate ={}, taxableAmount ={}, itemTotal ={}", totalTaxRate, taxableAmount, itemTotal);
|
| 725 |
customFofoOrderItem.setRate(fofoLineItem.getSellingPrice());
|
725 |
customFofoOrderItem.setRate(taxableSellingPrice);
|
| 726 |
customFofoOrderItem.setQuantity(fofoLineItem.getQuantity());
|
726 |
customFofoOrderItem.setQuantity(fofoLineItem.getQuantity());
|
| - |
|
727 |
float igstAmount = (customFofoOrderItem.getAmount() * fofoLineItem.getIgstRate()) / 100;
|
| - |
|
728 |
float cgstAmount = (customFofoOrderItem.getAmount() * fofoLineItem.getCgstRate()) / 100;
|
| - |
|
729 |
float sgstAmount = (customFofoOrderItem.getAmount() * fofoLineItem.getSgstRate()) / 100;
|
| - |
|
730 |
//LOGGER.info("igst [{},{}], cgst [{},{}], sgst[{},{}]", fofoLineItem.getIgstRate(), igstAmount, fofoLineItem.getCgstRate(), cgstAmount, fofoLineItem.getSgstRate(), sgstAmount);
|
| 727 |
customFofoOrderItem.setIgstRate(fofoLineItem.getIgstRate());
|
731 |
customFofoOrderItem.setIgstRate(fofoLineItem.getIgstRate());
|
| - |
|
732 |
customFofoOrderItem.setIgstAmount(igstAmount);
|
| 728 |
customFofoOrderItem.setCgstRate(fofoLineItem.getIgstRate());
|
733 |
customFofoOrderItem.setCgstRate(fofoLineItem.getCgstRate());
|
| - |
|
734 |
customFofoOrderItem.setCgstAmount(cgstAmount);
|
| 729 |
customFofoOrderItem.setSgstRate(fofoLineItem.getIgstRate());
|
735 |
customFofoOrderItem.setSgstRate(fofoLineItem.getSgstRate());
|
| - |
|
736 |
customFofoOrderItem.setSgstAmount(sgstAmount);
|
| 730 |
customFofoOrderItem.setHsnCode(fofoLineItem.getHsnCode());
|
737 |
customFofoOrderItem.setHsnCode(fofoLineItem.getHsnCode());
|
| - |
|
738 |
//customFofoOrderItem.setItemTotal(customFofoOrderItem.getAmount() + igstAmount + cgstAmount + sgstAmount);
|
| 731 |
customFofoOrderItem.setItemTotal(itemTotal);
|
739 |
//customFofoOrderItem.setAmount(taxableTotalAmount);
|
| 732 |
customFofoOrderItem.setSerialNumbers(String.join(", ",this.toSerialNumbers(fofoLineItem.getFofoLineItemSerialNumbers())));
|
740 |
customFofoOrderItem.setSerialNumbers(String.join(", ",this.toSerialNumbers(fofoLineItem.getFofoLineItemSerialNumbers())));
|
| 733 |
customerFofoOrderItems.add(customFofoOrderItem);
|
741 |
customerFofoOrderItems.add(customFofoOrderItem);
|
| - |
|
742 |
//pdfModel.setTotalAmount(pdfModel.getTotalAmount() + customFofoOrderItem.getItemTotal());
|
| 734 |
}
|
743 |
}
|
| 735 |
pdfModel.setOrderItems(customerFofoOrderItems);
|
744 |
pdfModel.setOrderItems(customerFofoOrderItems);
|
| 736 |
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
745 |
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
|
| 737 |
PdfUtils.generateAndWrite(pdfModel, byteArrayOutputStream);
|
746 |
PdfUtils.generateAndWrite(pdfModel, byteArrayOutputStream);
|
| 738 |
//final MediaType mediaType=MediaType.parseMediaType(profilePhotoModel.getContentType().getValue());
|
747 |
//final MediaType mediaType=MediaType.parseMediaType(profilePhotoModel.getContentType().getValue());
|
| 739 |
LOGGER.info("Pdf Stream length {}", byteArrayOutputStream.toByteArray().length);
|
748 |
LOGGER.info("Pdf Stream length {}", byteArrayOutputStream.toByteArray().length);
|
| 740 |
final HttpHeaders headers=new HttpHeaders();
|
749 |
final HttpHeaders headers=new HttpHeaders();
|
| 741 |
headers.setContentType(MediaType.APPLICATION_PDF);
|
750 |
headers.setContentType(MediaType.APPLICATION_PDF);
|
| 742 |
//headers.set("Content-Disposition", "Order-pdf-"+custom);
|
751 |
headers.set("Content-Disposition", "Order-"+orderId);
|
| 743 |
headers.setContentLength(byteArrayOutputStream.toByteArray().length);
|
752 |
headers.setContentLength(byteArrayOutputStream.toByteArray().length);
|
| 744 |
final InputStream inputStream=new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
|
753 |
final InputStream inputStream=new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
|
| 745 |
final InputStreamResource inputStreamResource=new InputStreamResource(inputStream);
|
754 |
final InputStreamResource inputStreamResource=new InputStreamResource(inputStream);
|
| 746 |
return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
|
755 |
return new ResponseEntity<InputStreamResource>(inputStreamResource, headers, HttpStatus.OK);
|
| 747 |
}
|
756 |
}
|
| 748 |
|
757 |
|
| 749 |
private Set<String> toSerialNumbers(Set<FofoLineItemSerialNumber> fofoLineItemSerialNumbers){
|
758 |
private Set<String> toSerialNumbers(Set<FofoLineItemSerialNumber> fofoLineItemSerialNumbers){
|
| 750 |
Set<String> serialNumbers = new HashSet<>(fofoLineItemSerialNumbers.size());
|
759 |
Set<String> serialNumbers = new HashSet<>(fofoLineItemSerialNumbers.size());
|
| 751 |
for(FofoLineItemSerialNumber fofoLineItemSerialNumber : fofoLineItemSerialNumbers){
|
760 |
for(FofoLineItemSerialNumber fofoLineItemSerialNumber : fofoLineItemSerialNumbers){
|