BackOfficeSalesController
unknown
java
3 years ago
35 kB
1
Indexable
Never
package com.oto11.controller; import com.google.gson.Gson; import com.oto11.dto.PageData; import com.oto11.dto.garage.CampaignAndAdditionalServiceDTO; import com.oto11.dto.sales.SalesDTO; import com.oto11.dto.settlement.SettlementExcelReportAsTableDTO; import com.oto11.dto.settlement.SettlementLogDTO; import com.oto11.dto.settlement.SettlementPaymentDTO; import com.oto11.dto.settlement.SettlementSalesDTO; import com.oto11.dto.settlement.ws.*; import com.oto11.enums.OrderStatusEnums; import com.oto11.enums.SapTransactionTypeEnums; import com.oto11.enums.UserTypeEnums; import com.oto11.exception.InvalidRequestException; import com.oto11.exception.NotFoundException; import com.oto11.exception.UnAuthorizedException; import com.oto11.service.ExcelHelper; import com.oto11.service.GarageService; import com.oto11.service.SalesService; import com.oto11.service.SettlementService; import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; import org.json.JSONObject; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import java.math.BigDecimal; import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; @RestController @RequestMapping("/garaj11/api/sales") @RequiredArgsConstructor @Log4j2 public class SalesController { @Value("${backoffice.offline-transfer-no}") private String offlineTransferNo; @Value("${backoffice.sap-account-no}") private String sapAccountNo; private final SalesService salesService; private final GarageService garageService; private final SettlementService settlementService; @CrossOrigin @GetMapping(value = "/find-sales-list") @PreAuthorize("@securityService.hasAccess(#token,'/sales/SalesListing','read')") public ResponseEntity<PageData<List<SalesDTO>>> findSalesList(@RequestHeader(value = "Authorization") String token, @RequestParam(value = "orderId", required = false) Long orderId, @RequestParam(value = "buyerId", required = false) String buyerId, @RequestParam(value = "buyerName", required = false) String buyerName, @RequestParam(value = "buyerSurname", required = false) String buyerSurname, @RequestParam(value = "sellerId", required = false) String sellerId, @RequestParam(value = "sellerName", required = false) String sellerName, @RequestParam(value = "plate", required = false) String plate, @RequestParam(required = false) String garageId, @RequestParam(value = "title", required = false) String vehicleTitle, @RequestParam(value = "beginDate") String beginDate, @RequestParam(value = "endDate") String endDate, @RequestParam(value = "salesType", required = false) String salesType, @RequestParam(value = "pageNo") Integer pageNo, @RequestParam(value = "pageSize") Integer pageSize, @RequestParam(value = "sortBy") String sortBy, @RequestParam(value = "campaign",required = false) String campaign, @RequestParam(value = "sortType") String sortType) { return new ResponseEntity<>(salesService.findSalesList(orderId, buyerId, buyerName, buyerSurname, sellerId, sellerName, plate, garageId, vehicleTitle, beginDate, endDate, salesType, pageNo, pageSize, sortBy, sortType,campaign), HttpStatus.OK); } @CrossOrigin @GetMapping(value = "/get-sales") @PreAuthorize("@securityService.hasAccess(#token,'/sales/SalesListing','read','/sales/SalesDetail','read')") public ResponseEntity<SalesDTO> getSales(@RequestHeader(value = "Authorization") String token, @RequestParam(value = "id") String carId, @RequestParam(value = "orderId") Long orderId) { return new ResponseEntity<>(salesService.getSales(carId, orderId), HttpStatus.OK); } @CrossOrigin @PostMapping(value = "/update-sales") @PreAuthorize("@securityService.hasAccess(#token,'/sales/SalesDetail','write')") public ResponseEntity<String> updateSales(@RequestHeader(value = "Authorization") String token, @RequestBody SalesDTO sales) { return new ResponseEntity<>(salesService.updateSales(sales), HttpStatus.OK); } @CrossOrigin @GetMapping(value = "/download-excel") @PreAuthorize("@securityService.hasAccess(#token,'/sales/SalesListing','read')") public ResponseEntity<String> downloadApprovalDataAsExcel(@RequestHeader(value = "Authorization") String token, @RequestParam(value = "orderId", required = false) Long orderId, @RequestParam(value = "buyerId", required = false) String buyerId, @RequestParam(value = "buyerName", required = false) String buyerName, @RequestParam(value = "buyerSurname", required = false) String buyerSurname, @RequestParam(value = "sellerId", required = false) String sellerId, @RequestParam(value = "sellerName", required = false) String sellerName, @RequestParam(value = "plate", required = false) String plate, @RequestParam(required = false) String garageId, @RequestParam(value = "title", required = false) String vehicleTitle, @RequestParam(value = "beginDate") String beginDate, @RequestParam(value = "endDate") String endDate, @RequestParam(value = "salesType", required = false) String salesType) throws ParseException, NotFoundException, UnAuthorizedException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.sss'Z'"); Timestamp beginDateT = null; Timestamp endDateT = null; if (beginDate != null) { Date beginDateO = sdf.parse(beginDate); beginDateT = new Timestamp(beginDateO.getTime()); } if (beginDate != null) { Date endDateO = sdf.parse(endDate); endDateT = new Timestamp(endDateO.getTime()); } SimpleDateFormat date = new SimpleDateFormat("dd-MM-yyyy"); SimpleDateFormat time = new SimpleDateFormat("HH:mm:SS"); SimpleDateFormat dateTime = new SimpleDateFormat("dd/MM/yyyy HH:mm:SS"); List<SalesDTO> result = salesService.findAllSalesList(orderId, buyerId, buyerName, buyerSurname, sellerId, sellerName, plate, garageId, vehicleTitle, beginDateT, endDateT, salesType).getBody(); int index = 0; int size = result.size() + 1; Object[][] data = new Object[size][35]; data[index++] = new Object[]{"Satıcı ID", "Satıcı İsim", "Satıcı Soyisim", "Satıcı Email", "Satıcı Tipi", // "Alıcı ID", "Alıcı İsim", "Alıcı Soyisim", "Alıcı Email", "Alıcı Tipi", // "Araç ID", "Araç Başlığı", "Yıl", "Marka", "Model", "Kasa Tipi", "Vites", "Yakıt", "Versiyon", "Kilometre", "Renk", "Plaka", "Şasi No", "Motor No", "Şehir", // "Ödeme ID", "İlan ID", "Ödeme Kanalı", "Durumu", "Ödeme Tipi","Ödeme Banka Adı", "Komisyon Tutarı", "Komisyon Oranı(%)", "Komisyon Tutarı (Net Tutar)", "Satış Tutarı", "Kredi Miktarı", "Devir Tarihi", "Ödeme Tarihi","Ödeme Saati", "Ek Hizmetler"}; while (index < size) { SalesDTO row = result.get(index - 1); data[index++] = new Object[]{ row.getSellerId(), row.getSellerName(), row.getSellerSurname(), row.getSellerEmail(), row.getSellerType() == null ? "" : (UserTypeEnums.INDIVIDUAL.name().equals(row.getSellerType()) ? "Bireysel" : "Kurumsal"), row.getBuyerId(), row.getBuyerName(), row.getBuyerSurname(), row.getBuyerEmail(), row.getBuyerType() == null ? "" : (UserTypeEnums.INDIVIDUAL.name().equals(row.getBuyerType()) ? "Bireysel" : "Kurumsal"), row.getCarId(), row.getVehicleTitle(), row.getVehicleYear(), row.getVehicleBrand(), row.getVehicleModel(), row.getVehicleBodyStyle(), row.getVehicleTransmissionType(), row.getVehicleFuelType(), row.getVehicleVersion(), row.getVehicleKilometers(), row.getVehicleColor(), row.getPlateNumber(), row.getChassisNumber(), row.getEngineNo(), row.getCity(), row.getOrderId() == null ? "" : String.valueOf(row.getOrderId()), row.getGarageId() == null ? "" : String.valueOf(row.getGarageId()), row.getOrderChannel(), row.getOrderStatus() == null ? "" : (OrderStatusEnums.PAYMENT_SUCCEEDED.name().equals(row.getOrderStatus()) ? "Ödeme Başarılı" : row.getOrderStatus()), row.getPaymentType(), row.getPaymentName(), row.getCommissionAmount(), row.getCommissionPercent(), row.getCommissionAmountExcVat(), row.getAmount(), row.getCreditAmount(), row.getDeliveredDate() == null ? "" : date.format(row.getDeliveredDate()), row.getCreatedDate() == null ? "" : date.format(row.getCreatedDate()), row.getCreatedDate() == null ? "" : time.format(row.getCreatedDate()), garageService.getAdditionalServices(row.getGarageId()) == null || garageService.getAdditionalServices(row.getGarageId()).isEmpty() ? "" : garageService.getAdditionalServices(row.getGarageId()).toString(), }; } String fileString = ExcelHelper.downloadDataAsBase64ExcelFile(data); return new ResponseEntity<>(fileString, HttpStatus.OK); } @CrossOrigin @GetMapping(value = "/set-delivered-date") @PreAuthorize("@securityService.hasAccess(#token,'/sales/SalesDetail','write')") public ResponseEntity<Boolean> setDeliveredDate(@RequestHeader(value = "Authorization") String token, @RequestParam(value = "id") String carId, @RequestParam(value = "deliveredDate") String deliveryDateStr, @RequestParam(value = "salesId") Long salesId) throws ParseException, NotFoundException, InvalidRequestException { Timestamp deliveredDate = null; if (deliveryDateStr != null) { Calendar c = Calendar.getInstance(); c.setTime(new SimpleDateFormat("yyyy-MM-dd").parse(deliveryDateStr)); deliveredDate = new Timestamp(c.getTime().getTime()); } else { return new ResponseEntity<>(null, HttpStatus.BAD_REQUEST); } Boolean isSet = salesService.setDeliveredDate(carId, deliveredDate); transferToSap(token,salesId); return new ResponseEntity<>(isSet, HttpStatus.OK); } @CrossOrigin @GetMapping(value = "/download-sap-sales-excel") @PreAuthorize("@securityService.hasAccess(#token,'/sales/SalesListing','read')") public ResponseEntity<String> downloadSapSalesExcel(@RequestHeader(value = "Authorization") String token, @RequestParam(value = "id") Long salesId) throws NotFoundException, InvalidRequestException, ParseException { List<String> sortList = new ArrayList<>(); HashMap<String, Object[][]> excelData = new HashMap<>(); List<SettlementExcelReportAsTableDTO> resultData = getResultData(salesId); for (SettlementExcelReportAsTableDTO sheet : resultData) { sortList.add(sheet.getName()); excelData.put(sheet.getName(), sheet.getData()); } return new ResponseEntity<>(ExcelHelper.downloadDataAsBase64ExcelFileMultipleSheet(excelData, sortList), HttpStatus.OK); } @CrossOrigin @GetMapping(value = "/get-sap-excel-as-table") @PreAuthorize("@securityService.hasAccess(#token,'/sales/SalesListing','read')") public ResponseEntity<List<SettlementExcelReportAsTableDTO>> getSapExcelAsTable(@RequestHeader(value = "Authorization") String token, @RequestParam(value = "id") Long salesId) throws NotFoundException, InvalidRequestException, ParseException { List<SettlementExcelReportAsTableDTO> resultData = getResultData(salesId); return new ResponseEntity<>(resultData, HttpStatus.OK); } private List<SettlementExcelReportAsTableDTO> getResultData(Long salesId) throws NotFoundException, InvalidRequestException, ParseException { SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy"); SettlementSalesDTO sales = salesService.findSales(salesId); if (sales == null) { throw new NotFoundException(); } SettlementPaymentDTO payment = salesService.findPaymentByOrderId(sales.getOrderId()); if (payment == null) { throw new NotFoundException(); } Timestamp deliveredDate = garageService.getDeliveredDate(sales.getCarId()).getBody(); Boolean isPaymentCancellation = sales.getSettlementStatus() != null && sales.getSettlementStatus().equals(0) ? true : false; if (!isPaymentCancellation && deliveredDate == null && SapTransactionTypeEnums.T.name().equals(payment.getSapTransactionType())) { throw new InvalidRequestException(); } else { deliveredDate = new Timestamp(new Date().getTime()); } log.info("Settlement Status : " + sales.getSettlementStatus() + " isPaymentCancellation : " + isPaymentCancellation); Gson gson = new Gson(); SettlementLogDTO settlementLogDTOCommission = settlementService.findByOrderIdAndWstype(sales.getOrderId(), "COMMISSION"); SettlementLogDTO settlementLogDTOPayment = settlementService.findByOrderIdAndWstype(sales.getOrderId(), "PAYMENT"); String commissionDate = sdf.format(deliveredDate); String paymentDate = sdf.format(new Date()); if (!StringUtils.isEmpty(settlementLogDTOCommission) && !StringUtils.isEmpty(settlementLogDTOCommission.getWsRequestData())){ JSONObject jo = new JSONObject(settlementLogDTOCommission.getWsRequestData()); if (jo.has("tamamlanma_TARIHI") && !StringUtils.isEmpty(jo.getString("tamamlanma_TARIHI"))){ commissionDate = sdf.format(sdf1.parse(jo.getString("tamamlanma_TARIHI"))); } } if (!StringUtils.isEmpty(settlementLogDTOPayment) && !StringUtils.isEmpty(settlementLogDTOPayment.getWsRequestData())){ JSONObject jo = new JSONObject(settlementLogDTOPayment.getWsRequestData()); if (jo.has("islem_TARIHI") && !StringUtils.isEmpty(jo.getString("islem_TARIHI"))){ paymentDate = sdf.format(sdf1.parse(jo.getString("islem_TARIHI"))); } } String transactionType = payment.getSapTransactionType(); String commissionTransactionType = SapTransactionTypeEnums.R.name(); if (isPaymentCancellation) { transactionType = SapTransactionTypeEnums.T.name().equals(payment.getSapTransactionType()) ? SapTransactionTypeEnums.TI.name() : SapTransactionTypeEnums.RI.name(); commissionTransactionType = SapTransactionTypeEnums.RI.name(); } String sapBankCollection = null; String sellerId = null; String buyerId = null; String sellerId02 = null; String buyerId02 = null; String transactionType03 = null; BigDecimal commissionAmount = null; String sapCollectionType = null; if (SapTransactionTypeEnums.T.name().equals(payment.getSapTransactionType())) { sapBankCollection = "OFFLINE_TRANSFER".equals(payment.getSapCollectionBankAccount()) ? offlineTransferNo : payment.getSapCollectionBankAccount(); sellerId = sales.getSellerId(); buyerId = ""; sellerId02 = isPaymentCancellation ? "" : sales.getSellerId(); buyerId02 = sales.getBuyerId(); commissionAmount = sales.getCommissionAmount(); transactionType03 = isPaymentCancellation ? SapTransactionTypeEnums.SI.name() : SapTransactionTypeEnums.S.name(); sapCollectionType = "0".concat(payment.getSapCollectionType()); } else if (SapTransactionTypeEnums.R.name().equals(payment.getSapTransactionType())) { sapBankCollection = sapAccountNo; sellerId = ""; buyerId = sales.getBuyerId(); sellerId02 = ""; buyerId02 = sales.getBuyerId(); commissionAmount = sales.getAmount(); transactionType03 = commissionTransactionType; sapCollectionType = "0".concat(payment.getSapCollectionType()); ; } else { sapBankCollection = ""; sellerId = ""; buyerId = ""; sellerId02 = ""; buyerId02 = ""; commissionAmount = new BigDecimal(0); transactionType03 = ""; sapCollectionType = ""; } Calendar c = Calendar.getInstance(); c.setTime(new Date()); c.add(Calendar.DATE, 1); Date dt = c.getTime(); String salesCreateDate = sales.getCreatedDate() != null ? sdf.format(new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").parse(sales.getCreatedDate())) : ""; HashMap<String, Object[][]> excelData = new HashMap<>(); Object[][] data1 = new Object[2][7]; data1[0] = new Object[]{"ORDER_NUMBER", "TRANSACTION_TYPE", "IADE_KALEMI", "TAHSILAT_TIPI", "ISLEM_TARIHI", "TAHSILAT_HESAP_NUMARASI", "TUTAR"}; data1[1] = new Object[]{ sales.getOrderId().toString(), transactionType, payment.getRefundId(), sapCollectionType, salesCreateDate, sapBankCollection, sales.getAmount() }; String sheetName1 = "ZFI_GRJ11_01 (TAHSILAT1)"; excelData.put(sheetName1, data1); Object[][] data2 = new Object[2][9]; data2[0] = new Object[]{"ORDER_NUMBER", "ORDER_ITEM_ID", "TRANSACTION_TYPE", "IADE_KALEMI", "ISLEM_TARIHI", "SATICI_ID", "TUTAR", "ALICI_ID", "KAPORA_TUTAR"}; data2[1] = new Object[]{ sales.getOrderId().toString(), payment.getOrderItemId(), transactionType, payment.getRefundId(), salesCreateDate, sellerId02, sales.getAmount(), buyerId02, "" }; String sheetName2 = "ZFI_GRJ11_02 (TAHSILAT2)"; excelData.put(sheetName2, data2); Object[][] data3 = new Object[2][8]; data3[0] = new Object[]{"ORDER_NUMBER", "ORDER_ITEM_ID", "TRANSACTION_TYPE", "IADE_KALEM_ID", "TAMAMLANMA_TARIHI", "SATICI_ID", "ALICI_ID", "TUTAR"}; data3[1] = new Object[]{ sales.getOrderId().toString(), payment.getOrderItemId(), transactionType03, payment.getRefundId(), commissionDate, sellerId, buyerId, commissionAmount, }; String sheetName3 = "ZFI_GRJ11_03 (Komisyon)"; excelData.put(sheetName3, data3); Object[][] data4 = new Object[2][8]; data4[0] = new Object[]{"ORDER_NUMBER", "ORDER_ITEM_ID", "IZAHAT_NUMARASI", "ISLEM_TARIHI", "SATICI_ID", "ODENMESI_GEREKEN_TUTAR", "BLOKE_TUTAR", "ODENECEK_TUTAR"}; data4[1] = new Object[]{ sales.getOrderId().toString(), payment.getOrderItemId(), payment.getSapExplanationNo(), paymentDate, sales.getSellerId(), sales.getSellerClaimAmount(), "", sales.getSellerClaimAmount(), }; String sheetName4 = "ZFI_GRJ11_04 (Ödeme)"; excelData.put(sheetName4, data4); List<String> sortList = Arrays.asList(sheetName1, sheetName2, sheetName3, sheetName4); List<SettlementExcelReportAsTableDTO> resultData = new ArrayList<>(); for (String name : sortList) { SettlementExcelReportAsTableDTO sheetData = SettlementExcelReportAsTableDTO.builder().name(name).data(excelData.get(name)).build(); if ((SapTransactionTypeEnums.R.name().equals(transactionType) || isPaymentCancellation) && name.equals("ZFI_GRJ11_04 (Ödeme)")) continue; resultData.add(sheetData); } return resultData; } @CrossOrigin @GetMapping(value = "/transfer-to-sap") @PreAuthorize("@securityService.hasAccess(#token,'/sales/SalesDetail','write')") public ResponseEntity<String> transferToSap(@RequestHeader(value = "Authorization") String token, @RequestParam(value = "id") Long salesId) throws ParseException, NotFoundException, InvalidRequestException { SettlementSalesDTO sales = salesService.findSales(salesId); if (sales == null) { throw new NotFoundException("transfer-to-sap Sales not found : " + salesId); } SettlementPaymentDTO payment = salesService.findPaymentByOrderId(sales.getOrderId()); if (payment == null) { throw new NotFoundException("transfer-to-sap payment not found for orderId : " + sales.getOrderId()); } Timestamp deliveredDate = garageService.getDeliveredDate(sales.getCarId()).getBody(); if (deliveredDate == null && SapTransactionTypeEnums.T.name().equals(payment.getSapTransactionType())) { throw new InvalidRequestException("transfer-to-sap invalid parameter - deliveredDate : " + deliveredDate + " / SapTransactionType : payment.getSapTransactionType()"); } else { deliveredDate = new Timestamp(new Date().getTime()); } JSONObject jo = sendSapWS(sales, payment, deliveredDate, false); return new ResponseEntity<>(jo.toString(), HttpStatus.OK); } @CrossOrigin @GetMapping(value = "/cancel-payment-to-sap") @PreAuthorize("@securityService.hasAccess(#token,'/sales/SalesDetail','write')") public ResponseEntity<String> cancelPaymentToSAP(@RequestHeader(value = "Authorization") String token, @RequestParam(value = "id") Long salesId) throws ParseException, NotFoundException, InvalidRequestException { SettlementSalesDTO sales = salesService.findSales(salesId); if (sales == null) { throw new NotFoundException("cancel-payment-to-sap Sales not found : " + salesId); } SettlementPaymentDTO payment = salesService.findPaymentByOrderId(sales.getOrderId()); if (payment == null) { throw new NotFoundException("cancel-payment-to-sap payment not found for orderId : " + sales.getOrderId()); } Timestamp deliveredDate = garageService.getDeliveredDate(sales.getCarId()).getBody(); if (deliveredDate == null) { deliveredDate = new Timestamp(new Date().getTime()); } JSONObject jo = sendSapWS(sales, payment, deliveredDate, true); return new ResponseEntity<>(jo.toString(), HttpStatus.OK); } private JSONObject sendSapWS(SettlementSalesDTO sales, SettlementPaymentDTO payment, Timestamp deliveredDate, Boolean isPaymentCancellation) throws ParseException { JSONObject jo = new JSONObject(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String salesCreateDate = sales.getCreatedDate() != null ? sdf.format(new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").parse(sales.getCreatedDate())) : ""; String transactionType = payment.getSapTransactionType(); String commissionTransactionType = SapTransactionTypeEnums.R.name(); if (isPaymentCancellation) { transactionType = SapTransactionTypeEnums.T.name().equals(payment.getSapTransactionType()) ? SapTransactionTypeEnums.TI.name() : SapTransactionTypeEnums.RI.name(); commissionTransactionType = SapTransactionTypeEnums.RI.name(); } String sapBankCollection = null; String sellerId = null; String buyerId = null; String sellerId02 = null; String buyerId02 = null; String transactionType03 = null; BigDecimal commissionAmount = null; String sapCollectionType = null; if (SapTransactionTypeEnums.T.name().equals(payment.getSapTransactionType())) { sapBankCollection = "OFFLINE_TRANSFER".equals(payment.getSapCollectionBankAccount()) ? offlineTransferNo : payment.getSapCollectionBankAccount(); sellerId = sales.getSellerId(); buyerId = ""; sellerId02 = isPaymentCancellation ? "" : sales.getSellerId(); buyerId02 = sales.getBuyerId(); commissionAmount = sales.getCommissionAmount(); transactionType03 = isPaymentCancellation ? SapTransactionTypeEnums.SI.name() : SapTransactionTypeEnums.S.name(); sapCollectionType = "0".concat(payment.getSapCollectionType()); } else if (SapTransactionTypeEnums.R.name().equals(payment.getSapTransactionType())) { sapBankCollection = sapAccountNo; sellerId = ""; buyerId = sales.getBuyerId(); sellerId02 = ""; buyerId02 = sales.getBuyerId(); commissionAmount = sales.getAmount(); transactionType03 = commissionTransactionType; sapCollectionType = "0".concat(payment.getSapCollectionType()); } else { sapBankCollection = ""; sellerId = ""; buyerId = ""; sellerId02 = ""; buyerId02 = ""; commissionAmount = new BigDecimal(0); transactionType03 = ""; sapCollectionType = ""; } //*******************************************************************// SettlementLogDTO receiptOfPayment1 = settlementService.findByOrderIdAndWstype(sales.getOrderId(), "RECEIPTOFPAYMENT1"); SettlementLogDTO receiptOfPayment2 = settlementService.findByOrderIdAndWstype(sales.getOrderId(), "RECEIPTOFPAYMENT2"); if( receiptOfPayment1 == null || !"SUCCESS".equals(receiptOfPayment1.getStatus()) || receiptOfPayment2 == null || !"SUCCESS".equals(receiptOfPayment2.getStatus()) ) { ZFI_GRJ11_S_001 zfi_grj11_s_001 = new ZFI_GRJ11_S_001(); zfi_grj11_s_001.setORDER_NUMBER(sales.getOrderId().toString()); zfi_grj11_s_001.setTRANSACTION_TYPE(transactionType); zfi_grj11_s_001.setIADE_KALEMI(payment.getRefundId()); zfi_grj11_s_001.setTAHSILAT_TIPI(sapCollectionType); zfi_grj11_s_001.setISLEM_TARIHI(salesCreateDate); zfi_grj11_s_001.setTAHSILAT_HESAP_NUMARASI(sapBankCollection); zfi_grj11_s_001.setTUTAR(sales.getAmount()); log.info("zfi_grj11_s_001 Table Info : " + zfi_grj11_s_001.toString()); ZFI_GRJ11_S_002 zfi_grj11_s_002 = new ZFI_GRJ11_S_002(); zfi_grj11_s_002.setORDER_NUMBER(sales.getOrderId().toString()); zfi_grj11_s_002.setORDER_ITEM_ID(payment.getOrderItemId()); zfi_grj11_s_002.setTRANSACTION_TYPE(transactionType); zfi_grj11_s_002.setIADE_KALEMI(payment.getRefundId()); zfi_grj11_s_002.setISLEM_TARIHI(salesCreateDate); zfi_grj11_s_002.setALICI_ID(buyerId02); zfi_grj11_s_002.setSATICI_ID(sellerId02); zfi_grj11_s_002.setTUTAR(sales.getAmount()); zfi_grj11_s_002.setKAPORA_TUTAR(new BigDecimal("0")); log.info("zfi_grj11_s_002 Table Info : " + zfi_grj11_s_002.toString()); BAPIRET2 receiptOfPayment = salesService.sendReceiptOfPayment(zfi_grj11_s_001, zfi_grj11_s_002); JSONObject ropJson = new JSONObject(); ropJson.put("key", receiptOfPayment.getTYPE()); ropJson.put("status", receiptOfPayment.getMESSAGE_V1()); ropJson.put("message", receiptOfPayment.getMESSAGE()); jo.put("receiptOfPayment", ropJson); log.info("zfi_grj11_s_001 and zfi_grj11_s_002 Response Info : " + ropJson.toString()); } //*******************************************************************// ZFI_GRJ11_S_003 zfi_grj11_s_003 = new ZFI_GRJ11_S_003(); zfi_grj11_s_003.setORDER_NUMBER(sales.getOrderId().toString()); zfi_grj11_s_003.setORDER_ITEM_ID(payment.getOrderItemId()); zfi_grj11_s_003.setIADE_KALEM_ID(payment.getRefundId()); zfi_grj11_s_003.setTAMAMLANMA_TARIHI(deliveredDate != null ? sdf.format(deliveredDate) : ""); zfi_grj11_s_003.setALICI_ID(sales.getBuyerId()); zfi_grj11_s_003.setTUTAR(commissionAmount); zfi_grj11_s_003.setALICI_ID(buyerId); zfi_grj11_s_003.setSATICI_ID(sellerId); zfi_grj11_s_003.setTRANSACTION_TYPE(transactionType03); log.info("zfi_grj11_s_003 Table Info : " + zfi_grj11_s_003.toString()); BAPIRET2 commission = salesService.sendCommission(zfi_grj11_s_003); JSONObject cJson = new JSONObject(); cJson.put("key", commission.getTYPE()); cJson.put("status", commission.getMESSAGE_V1()); cJson.put("message", commission.getMESSAGE()); jo.put("commission", cJson); log.info("zfi_grj11_s_003 Response Info : " + cJson.toString()); Integer settlementStatus = null; //*******************************************************************// if (!isPaymentCancellation && !SapTransactionTypeEnums.R.name().equals(transactionType)) { Calendar c = Calendar.getInstance(); c.setTime(new Date()); // c.add(Calendar.DATE, 1); Date dt = c.getTime(); ZFI_GRJ11_S_004 zfi_grj11_s_004 = new ZFI_GRJ11_S_004(); zfi_grj11_s_004.setORDER_NUMBER(sales.getOrderId().toString()); zfi_grj11_s_004.setORDER_ITEM_ID(payment.getOrderItemId()); zfi_grj11_s_004.setIZAHAT_NUMARASI(payment.getSapExplanationNo()); zfi_grj11_s_004.setISLEM_TARIHI(sdf.format(dt)); zfi_grj11_s_004.setSATICI_ID(sales.getSellerId()); zfi_grj11_s_004.setODENMESI_GEREKEN_TUTAR(sales.getSellerClaimAmount()); zfi_grj11_s_004.setBLOKE_TUTAR(new BigDecimal("0")); zfi_grj11_s_004.setODENECEK_TUTAR(sales.getSellerClaimAmount()); log.info("zfi_grj11_s_004 Table Info : " + zfi_grj11_s_004.toString()); BAPIRET2 payment04 = salesService.sendPayment(zfi_grj11_s_004); JSONObject pJson = new JSONObject(); pJson.put("key", payment04.getTYPE()); pJson.put("status", payment04.getMESSAGE_V1()); pJson.put("message", payment04.getMESSAGE()); jo.put("payment", pJson); log.info("zfi_grj11_s_004 Response Info : " + pJson.toString()); if ("S".contains(commission.getTYPE()) && "S".contains(payment04.getTYPE())) { Boolean isUpdated = salesService.setSettlementStatus(sales.getOrderId(), 1); if (isUpdated) { settlementStatus = 1; } } } else if (!isPaymentCancellation && SapTransactionTypeEnums.R.name().equals(transactionType)) { if ("S".contains(commission.getTYPE())) { Boolean isUpdated = salesService.setSettlementStatus(sales.getOrderId(), 1); if (isUpdated) { settlementStatus = 1; } } } else if (isPaymentCancellation) { if ("S".contains(commission.getTYPE())) { Boolean isUpdated = salesService.setSettlementStatus(sales.getOrderId(), 0); if (isUpdated) { settlementStatus = 0; } } } jo.put("settlementStatus", settlementStatus); //*******************************************************************// return jo; } @CrossOrigin @GetMapping(value = "/campaign-and-addtional-services") @PreAuthorize("@securityService.hasAccess(#token,'/sales/SalesListing','read','/sales/SalesDetail','read')") public ResponseEntity<CampaignAndAdditionalServiceDTO> findCampaignAndAdditionalServices(@RequestHeader(value = "Authorization") String token, @RequestParam(value = "carId") String carId) throws NotFoundException, UnAuthorizedException { return new ResponseEntity<>(garageService.findCampaignAndAdditionalServices(carId), HttpStatus.OK); } }