diff --git a/src/main/java/au/com/royalpay/payment/manage/tradelog/core/TradeLogService.java b/src/main/java/au/com/royalpay/payment/manage/tradelog/core/TradeLogService.java index 1fb0b3185..954cc6cc5 100644 --- a/src/main/java/au/com/royalpay/payment/manage/tradelog/core/TradeLogService.java +++ b/src/main/java/au/com/royalpay/payment/manage/tradelog/core/TradeLogService.java @@ -52,4 +52,6 @@ public interface TradeLogService { PageList listPreRefundClients(PreRefundQueryBean params); void exportSettlementLog(TradeLogQuery query, JSONObject partner, HttpServletResponse response); + + void exportPDFSettlement(TradeLogQuery query, JSONObject partner, HttpServletResponse response); } diff --git a/src/main/java/au/com/royalpay/payment/manage/tradelog/core/impls/TradeLogServiceImpl.java b/src/main/java/au/com/royalpay/payment/manage/tradelog/core/impls/TradeLogServiceImpl.java index a992efea2..3b7ca7ca5 100644 --- a/src/main/java/au/com/royalpay/payment/manage/tradelog/core/impls/TradeLogServiceImpl.java +++ b/src/main/java/au/com/royalpay/payment/manage/tradelog/core/impls/TradeLogServiceImpl.java @@ -156,6 +156,8 @@ public class TradeLogServiceImpl implements TradeLogService { private org.springframework.core.io.Resource trans_excel; @Value("classpath:/jasper/austrac_report.jasper") private org.springframework.core.io.Resource austrac_report; + @Value("classpath:/jasper/partner_settlement_detail.jasper") + private org.springframework.core.io.Resource partner_settlement_flow; @Override public JSONObject listPartnerTradeLogs(JSONObject manager, JSONObject account, String shortId, TradeLogQuery query, String timezone) throws Exception { @@ -1246,7 +1248,7 @@ public class TradeLogServiceImpl implements TradeLogService { row.createCell(11, Cell.CELL_TYPE_STRING).setCellValue(settle.getBigDecimal("rate") == null? "": settle.getBigDecimal("rate").toPlainString() + "%"); row.createCell(12, Cell.CELL_TYPE_STRING).setCellValue(settle.getBigDecimal("settle_amount") == null ? "" : settle.getBigDecimal("settle_amount").setScale(2, BigDecimal.ROUND_DOWN).toPlainString()); - row.createCell(13, Cell.CELL_TYPE_STRING).setCellValue(settle.getString("order_detail")); + row.createCell(13, Cell.CELL_TYPE_STRING).setCellValue(settle.getString("remark")); device = clientDeviceMapper.find(settle.getString("dev_id")); if (device != null) clientDevId = device.getString("client_dev_id"); @@ -1273,4 +1275,54 @@ public class TradeLogServiceImpl implements TradeLogService { IOUtils.closeQuietly(ous); } } + + @Override + public void exportPDFSettlement(TradeLogQuery query, JSONObject partner, HttpServletResponse response) { + int client_id = partner.getIntValue("client_id"); + String begin = query.getDatefrom() == null ?"":query.getDatefrom(); + String end = query.getDateto() == null ?"":query.getDateto(); + JSONObject client = partner.getJSONObject("client"); + String timezone = client.getString("timezone"); + JSONObject params = query.toParams(timezone); + params.put("client_id", client_id); + List clientOrderList = transactionMapper.getClientOrderByTransactionTime(params); + List clientOrders = new ArrayList<>(clientOrderList.size()); + clientOrderList.parallelStream().forEach(p->{ + clientOrders.add(p.getInteger("clearing_order")); + }); + List settlementLogDetailList = transactionMapper.getSettlementLogDetailList(clientOrders, client_id); + TimeZoneUtils.switchTimeZoneToString(settlementLogDetailList, timezone, "yyyy-MM-dd HH:mm:ss", Arrays.asList("transaction_time")); + try { + + JSONObject parmerters = new JSONObject(); + parmerters.put("dateRange", "(Statement Period " + begin + "~" + + end + ")"); + parmerters.put("clientName", client.getString("company_name")); + parmerters.put("clientAddress", client.getString("address")); + parmerters.put("clientLocation", client.getString("suburb") + "," + client.getString("state") + "," + client.getString("postcode")); + parmerters.put("logo", logo.getInputStream()); + settlementLogDetailList.parallelStream().forEach(item -> { + scaleDecimalVal(item, "display_amount", item.getString("transaction_currency")); + String platformCurrency = PlatformEnvironment.getEnv().getForeignCurrency(); + scaleDecimalVal(item, "clearing_amount", platformCurrency); + scaleDecimalVal(item, "settle_amount", platformCurrency); + scaleDecimalVal(item, "total_surcharge", platformCurrency); + scaleDecimalVal(item, "transaction_amount", platformCurrency); + item.put("exchange_rate", item.getBigDecimal("exchange_rate").setScale(5, BigDecimal.ROUND_DOWN)); + item.put("gateway" , item.getInteger("gateway") == null ? "-" : TradeType.fromGatewayNumber(item.getIntValue("gateway")).getTradeType()); + item.put("rate", item.getBigDecimal("rate") == null? "-": item.getBigDecimal("rate").toPlainString() + "%"); + }); + JRDataSource jrDataSource = new JRBeanCollectionDataSource(settlementLogDetailList); + response.setContentType("application/pdf"); + String fileName = partner.getString("client_moniker") + "_" + parmerters.getString("dateRange").replaceAll("/", ""); + response.setHeader("Content-Disposition", "attachment;fileName=" + fileName + ".pdf"); + OutputStream outs = response.getOutputStream(); + byte[] bytes = JasperRunManager.runReportToPdf(partner_settlement_flow.getInputStream(), parmerters, jrDataSource); + outs.write(bytes, 0, bytes.length); + outs.flush(); + outs.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/au/com/royalpay/payment/manage/tradelog/web/TradeFlowController.java b/src/main/java/au/com/royalpay/payment/manage/tradelog/web/TradeFlowController.java index 27275b973..fef98d397 100644 --- a/src/main/java/au/com/royalpay/payment/manage/tradelog/web/TradeFlowController.java +++ b/src/main/java/au/com/royalpay/payment/manage/tradelog/web/TradeFlowController.java @@ -65,4 +65,10 @@ public class TradeFlowController { tradeLogService.exportSettlementLog(query, partner, response); } + @PartnerMapping(value = "/settlement/log/pdf",method = RequestMethod.GET) + @ResponseBody + public void exportLogPDF(TradeLogQuery query, @ModelAttribute(CommonConsts.PARTNER_STATUS) JSONObject partner, HttpServletResponse response) { + tradeLogService.exportPDFSettlement(query, partner, response); + } + } diff --git a/src/main/resources/jasper/partner_settlement_detail.jasper b/src/main/resources/jasper/partner_settlement_detail.jasper new file mode 100644 index 000000000..caeb59160 Binary files /dev/null and b/src/main/resources/jasper/partner_settlement_detail.jasper differ diff --git a/src/main/ui/static/payment/tradelog/partner-settlement-log.js b/src/main/ui/static/payment/tradelog/partner-settlement-log.js index 113cf4a85..bcb76f875 100644 --- a/src/main/ui/static/payment/tradelog/partner-settlement-log.js +++ b/src/main/ui/static/payment/tradelog/partner-settlement-log.js @@ -92,9 +92,12 @@ define(['angular', 'uiBootstrap', 'uiRouter'], function (angular) { }; $scope.loadSettlementLogs(1); - $scope.exportSettlementLogs = function() { + $scope.exportSettlementLogs = function(pattern) { var params = angular.copy($scope.params); var url = '/client/trans_flow/settlement/log/excel'; + if (pattern === 'pdf') { + url = '/client/trans_flow/settlement/log/pdf'; + } var connectSymbol = '?'; if (params.datefrom) { params.datefrom = $filter('date')(params.datefrom, 'yyyyMMdd'); diff --git a/src/main/ui/static/payment/tradelog/templates/partner_settlement_logs.html b/src/main/ui/static/payment/tradelog/templates/partner_settlement_logs.html index f9b7990a3..714ab730f 100644 --- a/src/main/ui/static/payment/tradelog/templates/partner_settlement_logs.html +++ b/src/main/ui/static/payment/tradelog/templates/partner_settlement_logs.html @@ -88,9 +88,15 @@ - - export - +
+ + +