Subversion Repositories SmartDukaan

Rev

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

Rev 21985 Rev 22026
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){