From ef2bf3659b1a74bb5b0ba847afc557ad6515eafe Mon Sep 17 00:00:00 2001 From: "taylor.dang" Date: Fri, 22 May 2020 16:28:52 +0800 Subject: [PATCH] =?UTF-8?q?invoice=E6=94=AF=E6=8C=81html=E8=BD=ACpdf?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 +- .../manage/dev/web/TestController.java | 21 ++ .../ReadOnlyConnectionInterceptor.java | 3 +- .../manage/tradelog/core/TradeLogService.java | 3 + .../core/impls/TradeLogServiceImpl.java | 160 +++++++++----- .../web/ManageTradelogController.java | 27 +-- src/main/resources/templates/app/invoice.html | 206 ++++++++++-------- src/main/ui/static/templates/mch_invoice.css | 108 +++++++++ 8 files changed, 372 insertions(+), 160 deletions(-) create mode 100644 src/main/ui/static/templates/mch_invoice.css diff --git a/pom.xml b/pom.xml index 843cdd552..c3cfc1b87 100644 --- a/pom.xml +++ b/pom.xml @@ -9,10 +9,10 @@ 4.0.0 manage - 2.3.9 + 2.3.10 UTF-8 - 2.2.0 + 2.3.0 ${project.version} diff --git a/src/main/java/au/com/royalpay/payment/manage/dev/web/TestController.java b/src/main/java/au/com/royalpay/payment/manage/dev/web/TestController.java index e8f61f5c1..738a378f5 100644 --- a/src/main/java/au/com/royalpay/payment/manage/dev/web/TestController.java +++ b/src/main/java/au/com/royalpay/payment/manage/dev/web/TestController.java @@ -26,6 +26,7 @@ import au.com.royalpay.payment.manage.merchants.core.ClientManager; import au.com.royalpay.payment.manage.permission.manager.ManagerMapping; import au.com.royalpay.payment.manage.pos.datasource.ReadOnlyConnection; import au.com.royalpay.payment.manage.system.core.TradeSecureService; +import au.com.royalpay.payment.manage.tradelog.beans.TradeLogQuery; import au.com.royalpay.payment.manage.tradelog.core.TradeLogService; import au.com.royalpay.payment.tools.CommonConsts; import au.com.royalpay.payment.tools.connections.mpsupport.MpWechatApi; @@ -52,6 +53,7 @@ import org.joda.time.DateTime; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; +import org.springframework.ui.Model; import org.springframework.util.Assert; import org.springframework.util.MimeTypeUtils; import org.springframework.validation.Errors; @@ -394,6 +396,7 @@ public class TestController { public void aliforexcel(@ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager, HttpServletResponse httpResponse, AliExcel query) throws Exception { aliforexcelService.listClients(httpResponse, manager, query); } + @ManagerMapping(value = "/partner/reset_password", method = RequestMethod.GET, role = ManagerRole.DEVELOPER) public void resetPartnerPassword() { clientManager.updateAllPartnerPassword("PINE"); @@ -548,4 +551,22 @@ public class TestController { model.addObject("client", result); return model; } + + @GetMapping(value = "/trans_flow/pdf") + @ReadOnlyConnection + public ModelAndView exportTransFlowPDFHtml(TradeLogQuery query, @RequestParam String client_moniker, Model model) throws Exception { + return tradeLogService.exportTransFlow(query, getPartnerParams(client_moniker), model); + } + + private JSONObject getPartnerParams(String clientMoniker) { + JSONObject client = clientManager.getClientInfoByMoniker(clientMoniker); + if (client == null) { + throw new NotFoundException("Client Not Exists"); + } + JSONObject params = new JSONObject(); + params.put("client_id", client.getIntValue("client_id")); + params.put("client", client); + params.put("client_moniker", clientMoniker); + return params; + } } diff --git a/src/main/java/au/com/royalpay/payment/manage/pos/datasource/ReadOnlyConnectionInterceptor.java b/src/main/java/au/com/royalpay/payment/manage/pos/datasource/ReadOnlyConnectionInterceptor.java index eaa04b71a..1ac0a8b4b 100644 --- a/src/main/java/au/com/royalpay/payment/manage/pos/datasource/ReadOnlyConnectionInterceptor.java +++ b/src/main/java/au/com/royalpay/payment/manage/pos/datasource/ReadOnlyConnectionInterceptor.java @@ -19,8 +19,7 @@ public class ReadOnlyConnectionInterceptor implements Ordered { public Object proceed(ProceedingJoinPoint proceedingJoinPoint, ReadOnlyConnection readOnlyConnection) throws Throwable { try { DbContextHolder.setDbType(DbContextHolder.DbType.SLAVE); - Object result = proceedingJoinPoint.proceed(); - return result; + return proceedingJoinPoint.proceed(); } finally { DbContextHolder.clearDbType(); } 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 a9e3a978a..7dcf8e398 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 @@ -4,6 +4,7 @@ import au.com.royalpay.payment.manage.tradelog.beans.PreRefundQueryBean; import au.com.royalpay.payment.manage.tradelog.beans.TradeLogQuery; import com.alibaba.fastjson.JSONObject; import org.springframework.ui.Model; +import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletResponse; import java.util.List; @@ -36,6 +37,8 @@ public interface TradeLogService { void exportTransFlow(TradeLogQuery query, JSONObject partner, HttpServletResponse response) throws Exception; + ModelAndView exportTransFlow(TradeLogQuery query, JSONObject partner, Model model) throws Exception; + void exportUpayTransFlow(TradeLogQuery query, JSONObject partner, HttpServletResponse response) throws Exception; void exportTransFlowApi(TradeLogQuery query, JSONObject partner, HttpServletResponse response) throws Exception; 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 ebdfda893..08d6f8583 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 @@ -52,7 +52,6 @@ import org.apache.commons.lang3.StringEscapeUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateUtils; -import org.apache.http.util.TextUtils; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.ss.usermodel.*; @@ -62,9 +61,9 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.ui.Model; +import org.springframework.web.servlet.ModelAndView; import org.thymeleaf.context.Context; import org.thymeleaf.spring5.SpringTemplateEngine; -import org.xhtmlrenderer.pdf.ITextFontResolver; import org.xhtmlrenderer.pdf.ITextRenderer; import javax.annotation.Resource; @@ -523,9 +522,6 @@ public class TradeLogServiceImpl implements TradeLogService { params.put("client_id", client_id); JSONObject mchConfig = merchantInfoProvider.getMchExtParams(partner.getIntValue("client_id")); params.put("hide_sub_mch", mchConfig.getBooleanValue("hide_sub_mch")); - -// PageList logs = transactionMapper.listTransFlowPage(params, -// new PageBounds(query.getPage(), query.getLimit(), Order.formString("transaction_time.desc"))); List logs = transactionMapper.listTransFlow(params); TimeZoneUtils.switchTimeZone(logs, timezone, "create_time", "confirm_time", "transaction_time"); Paginator paginator = new Paginator(query.getPage(), query.getLimit(), logs.size()); @@ -570,9 +566,11 @@ public class TradeLogServiceImpl implements TradeLogService { int clientId = partner.getIntValue("client_id"); String timezone = partner.getJSONObject("client").getString("timezone"); JSONObject params = query.toParams(timezone); - params.put("channel", channels); +// params.put("channel", channels); clientManager.validateClients(clientId, params); params.put("client_id", clientId); + JSONObject mchConfig = merchantInfoProvider.getMchExtParams(partner.getIntValue("client_id")); + params.put("hide_sub_mch", mchConfig.getBooleanValue("hide_sub_mch")); clientManager.queryModifyClientIds(clientId, params); List logs = transactionMapper.listTransFlow(params); TimeZoneUtils.switchTimeZoneToString(logs, timezone, "dd/MM/yyyy HH:mm:ss", Collections.singletonList("transaction_time")); @@ -771,15 +769,14 @@ public class TradeLogServiceImpl implements TradeLogService { // } @Override public void exportTransFlow(TradeLogQuery query, JSONObject partner, HttpServletResponse response) throws Exception { - JSONObject transFlow = listPartnerTransFlowByExportPdf(query, partner,new String[]{"Wechat","Alipay","AlipayOnline"}); + JSONObject transFlow = listPartnerTransFlowByExportPdf(query, partner, new String[]{"Wechat", "Alipay", "AlipayOnline"}); JSONObject analysis = transFlow.getJSONObject("analysis"); JSONObject client = clientManager.getClientInfo(partner.getIntValue("client_id")); Context ctx = new Context(); - -// JSONObject manager = managerMapper.findById(device.getString("manager_id")); -// ctx.setVariable("firstname","lu"); if (!transFlow.getJSONArray("data").isEmpty()) { - try { + try (OutputStream outs = response.getOutputStream(); + ByteArrayOutputStream os = new ByteArrayOutputStream(); + ) { List dataList = transFlow.getJSONArray("data").toJavaList(JSONObject.class); JSONObject parmerters = new JSONObject(); parmerters.put("dateFrom", StringUtils.isNotBlank(query.getDatefrom()) @@ -788,7 +785,7 @@ public class TradeLogServiceImpl implements TradeLogService { StringUtils.isNotBlank(query.getDateto()) ? DateFormatUtils.format(DateUtils.parseDate(query.getDateto(), "yyyyMMdd"), "dd/MM/yyyy") : DateFormatUtils.format(new Date(), "dd/MM/yyyy")); - parmerters.put("dateRange", (StringUtils.isNotBlank(parmerters.getString("dateFrom")) ? parmerters.getString("dateFrom") : "") + "~" + parmerters.put("dateRange", (StringUtils.isNotBlank(parmerters.getString("dateFrom")) ? parmerters.getString("dateFrom") : "") + " ~ " + parmerters.getString("dateTo")); parmerters.put("partnerCode", client.getString("client_moniker")); parmerters.put("clientName", client.getString("company_name")); @@ -833,63 +830,116 @@ public class TradeLogServiceImpl implements TradeLogService { : "-"; item.put("debit", debit); item.put("credit", credit); - if(item.get("settle_amount")==null){ - item.put("settle_amount","-"); - } + item.putIfAbsent("settle_amount", "-"); }); - System.out.println("------>dataList:"+dataList); - System.out.println("------>parmerters:"+parmerters); - ctx.setVariable("parmerters",parmerters); - ctx.setVariable("dataList",dataList); + ctx.setVariable("parmerters", parmerters); + ctx.setVariable("dataList", dataList); + JSONObject orgInfo = orgManager.getOrgDetail(client.getIntValue("org_id"), null); + if (!orgInfo.containsKey("logo") || orgInfo.getIntValue("org_id") == 1) { + orgInfo.put("logo", "none"); + } + ctx.setVariable("orgInfo", orgInfo); final String html = thymeleaf.process("app/invoice.html", ctx); - - JRDataSource jrDataSource = new JRBeanCollectionDataSource(dataList); response.setContentType("application/pdf"); String fileName = client.getString("client_moniker") + "_Cross_Border_" + parmerters.getString("dateRange").replaceAll("/", ""); response.setHeader("Content-Disposition", "attachment;fileName=" + fileName + ".pdf"); - OutputStream outs = response.getOutputStream(); -// JSONObject clientIncrement = clientIncrementalMapper.findByClinetIdAndChannel(client.getIntValue("client_id"), "RP跨境商城"); -// InputStream jasper = clientIncrement == null ? trans_flow.getInputStream() : incremental_trans_flow.getInputStream(); -// byte[] bytes = JasperRunManager.runReportToPdf(jasper, parmerters, jrDataSource); - System.out.println("------>content:"+html); - - ByteArrayOutputStream os = new ByteArrayOutputStream(); ITextRenderer renderer = new ITextRenderer(); -// ITextFontResolver fontResolver = (ITextFontResolver) renderer.getSharedContext().getFontResolver(); - //添加字体库 begin -// File f = new File(fontDir); -// if (f.isDirectory()) { -// File[] files = f.listFiles(new FilenameFilter() { -// public boolean accept(File dir, String name) { -// String lower = name.toLowerCase(); -// return lower.endsWith(".otf") || lower.endsWith(".ttf") ; -// } -// }); -// for (int i = 0; i < files.length; i++) { -// fontResolver.addFont(files[i].getAbsolutePath(), BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); -// } -// } //添加字体库end renderer.setDocumentFromString(html); renderer.layout(); renderer.createPDF(os); - renderer.finishPDF(); byte[] bytes = os.toByteArray(); outs.write(bytes, 0, bytes.length); outs.flush(); - outs.close(); + renderer.finishPDF(); + } catch (Exception e) { + e.printStackTrace(); + } + + } + } + @Override + public ModelAndView exportTransFlow(TradeLogQuery query, JSONObject partner, Model model) throws Exception { + JSONObject transFlow = listPartnerTransFlowByExportPdf(query, partner, new String[]{"Wechat", "Alipay", "AlipayOnline"}); + JSONObject analysis = transFlow.getJSONObject("analysis"); + JSONObject client = clientManager.getClientInfo(partner.getIntValue("client_id")); + ModelAndView view = new ModelAndView("app/invoice.html"); + if (!transFlow.getJSONArray("data").isEmpty()) { + try { + List dataList = transFlow.getJSONArray("data").toJavaList(JSONObject.class); + JSONObject parmerters = new JSONObject(); + parmerters.put("dateFrom", StringUtils.isNotBlank(query.getDatefrom()) + ? DateFormatUtils.format(DateUtils.parseDate(query.getDatefrom(), "yyyyMMdd"), "dd/MM/yyyy") : ""); + parmerters.put("dateTo", + StringUtils.isNotBlank(query.getDateto()) + ? DateFormatUtils.format(DateUtils.parseDate(query.getDateto(), "yyyyMMdd"), "dd/MM/yyyy") + : DateFormatUtils.format(new Date(), "dd/MM/yyyy")); + parmerters.put("dateRange", (StringUtils.isNotBlank(parmerters.getString("dateFrom")) ? parmerters.getString("dateFrom") : "") + " ~ " + + parmerters.getString("dateTo")); + parmerters.put("partnerCode", client.getString("client_moniker")); + parmerters.put("clientName", client.getString("company_name")); + parmerters.put("clientAddress", client.getString("address")); + parmerters.put("balance", analysis.getDoubleValue("balance")); + parmerters.put("logo", logo.getInputStream()); + parmerters.put("actual_fee", takeDecimalOrDefault(analysis, "actual_fee", BigDecimal.ZERO)); + parmerters.put("totalSettledAmount", takeDecimalOrDefault(analysis, "total_settle_amount", BigDecimal.ZERO)); + parmerters.put("royalpay_charge", takeDecimalOrDefault(analysis, "total_royal_surcharge", BigDecimal.ZERO)); + parmerters.put("total_fee", takeDecimalOrDefault(analysis, "total_surcharge", BigDecimal.ZERO)); + parmerters.put("alipay_fee", takeDecimalOrDefault(analysis, "alipay_fee", BigDecimal.ZERO)); + parmerters.put("wechat_fee", takeDecimalOrDefault(analysis, "wechat_fee", BigDecimal.ZERO)); + parmerters.put("alipay_online_fee", takeDecimalOrDefault(analysis, "alipay_online_fee", BigDecimal.ZERO)); + parmerters.put("gst", takeDecimalOrDefault(analysis, "tax_amount", BigDecimal.ZERO)); + parmerters.put("royalpay_fee", takeDecimalOrDefault(analysis, "total_royalpay_fee", BigDecimal.ZERO)); + parmerters.put("incremental_fee", takeDecimalOrDefault(analysis, "total_incremental_surcharge", BigDecimal.ZERO)); + parmerters.put("incremental_gst", takeDecimalOrDefault(analysis, "total_incremental_tax", BigDecimal.ZERO)); + parmerters.put("royalpay_gst", analysis.getBigDecimal("tax_amount").subtract(analysis.getBigDecimal("total_incremental_tax")).setScale(2, RoundingMode.HALF_UP)); + dataList.parallelStream().forEach(item -> { + BigDecimal incrementalSurcharge = item.containsKey("incremental_surcharge") ? item.getBigDecimal("incremental_surcharge") : BigDecimal.ZERO; + BigDecimal taxAmount = item.containsKey("tax_amount") ? item.getBigDecimal("tax_amount") : BigDecimal.ZERO; + BigDecimal royalpaySurhcarge = item.containsKey("royal_surcharge") ? item.getBigDecimal("royal_surcharge") : BigDecimal.ZERO; + BigDecimal surhcargeBack = item.containsKey("surcharge_cashback") ? item.getBigDecimal("surcharge_cashback") : BigDecimal.ZERO; + BigDecimal channelSurcharge = item.containsKey("channel_surcharge") ? item.getBigDecimal("channel_surcharge") : BigDecimal.ZERO; + BigDecimal incrementalTax = incrementalSurcharge.divide(new BigDecimal(10), 2, RoundingMode.HALF_UP); + BigDecimal royalpayTax = taxAmount.subtract(incrementalTax); + BigDecimal realRoyalpayCharge = royalpaySurhcarge + .add(surhcargeBack) + .add(channelSurcharge) + .add(royalpayTax); + item.put("incremental_surcharge", incrementalSurcharge.add(incrementalTax).setScale(2, RoundingMode.HALF_UP)); + item.put("real_royalpay_surcharge", realRoyalpayCharge.setScale(2, RoundingMode.HALF_UP)); + scaleDecimalVal(item, "display_amount", item.getString("currency")); + String platformCurrency = PlatformEnvironment.getEnv().getForeignCurrency(); + scaleDecimalVal(item, "clearing_amount", platformCurrency); + scaleDecimalVal(item, "settle_amount", platformCurrency); + scaleDecimalVal(item, "total_surcharge", platformCurrency); + String debit = item.getString("transaction_type").equals("Debit") ? item.getBigDecimal("clearing_amount").toString() + : "-"; + String credit = item.getString("transaction_type").equals("Credit") ? item.getBigDecimal("clearing_amount").toString() + : "-"; + item.put("debit", debit); + item.put("credit", credit); + item.putIfAbsent("settle_amount", "-"); + }); + view.addObject("parmerters", parmerters); + view.addObject("dataList", dataList); + JSONObject orgInfo = orgManager.getOrgDetail(client.getIntValue("org_id"), null); + if (!orgInfo.containsKey("logo") || orgInfo.getIntValue("org_id") == 1) { + orgInfo.put("logo", "none"); + } + view.addObject("orgInfo", orgInfo); } catch (Exception e) { e.printStackTrace(); } - } + return view; } @Override - public void exportUpayTransFlow(TradeLogQuery query, JSONObject partner, HttpServletResponse response) throws Exception { - JSONObject transFlow = listPartnerTransFlowByExportPdf(query, partner,new String[]{"rpaypmt_card","rpaypmt_dd"}); + public void exportUpayTransFlow(TradeLogQuery query, JSONObject partner, HttpServletResponse response) throws + Exception { + JSONObject transFlow = listPartnerTransFlowByExportPdf(query, partner, new String[]{"rpaypmt_card", "rpaypmt_dd"}); JSONObject analysis = transFlow.getJSONObject("analysis"); JSONObject client = clientManager.getClientInfo(partner.getIntValue("client_id")); if (!transFlow.getJSONArray("data").isEmpty()) { @@ -920,7 +970,7 @@ public class TradeLogServiceImpl implements TradeLogService { parmerters.put("royalpay_fee", takeDecimalOrDefault(analysis, "total_royalpay_fee", BigDecimal.ZERO)); parmerters.put("incremental_fee", takeDecimalOrDefault(analysis, "total_incremental_surcharge", BigDecimal.ZERO)); parmerters.put("incremental_gst", takeDecimalOrDefault(analysis, "total_incremental_tax", BigDecimal.ZERO)); - parmerters.put("royalpay_gst", analysis.getBigDecimal("tax_amount").subtract(analysis.getBigDecimal("total_incremental_tax")).setScale(2,RoundingMode.HALF_UP)); + parmerters.put("royalpay_gst", analysis.getBigDecimal("tax_amount").subtract(analysis.getBigDecimal("total_incremental_tax")).setScale(2, RoundingMode.HALF_UP)); BigDecimal totalTransactionFee = analysis.getBigDecimal("total_transaction_fee").add(analysis.getBigDecimal("total_transaction_fee_tax")).setScale(2, RoundingMode.HALF_UP); BigDecimal totalRoyalpayFee = analysis.getBigDecimal("total_surcharge") .subtract(analysis.getBigDecimal("total_transaction_fee")) @@ -944,7 +994,7 @@ public class TradeLogServiceImpl implements TradeLogService { BigDecimal realRoyalpayCharge = item.getBigDecimal("total_surcharge").add(taxAmount).subtract(transactionFee).subtract(transactionFeeTax).subtract(incrementalSurcharge).subtract(incrementalTax); item.put("incremental_surcharge", incrementalSurcharge.add(incrementalTax).setScale(2, RoundingMode.HALF_UP)); item.put("total_surcharge_intax", realRoyalpayCharge.setScale(2, RoundingMode.HALF_UP)); - item.put("transaction_fee_intax", transactionFee.add(transactionFeeTax).setScale(2,RoundingMode.HALF_UP)); + item.put("transaction_fee_intax", transactionFee.add(transactionFeeTax).setScale(2, RoundingMode.HALF_UP)); scaleDecimalVal(item, "display_amount", item.getString("currency")); String platformCurrency = PlatformEnvironment.getEnv().getForeignCurrency(); scaleDecimalVal(item, "clearing_amount", platformCurrency); @@ -970,7 +1020,8 @@ public class TradeLogServiceImpl implements TradeLogService { } @Override - public void exportTransFlowApi(TradeLogQuery query, JSONObject partner, HttpServletResponse response) throws Exception { + public void exportTransFlowApi(TradeLogQuery query, JSONObject partner, HttpServletResponse response) throws + Exception { query.setClearing_status(-1); String clientKey = "exportTransFlow:" + partner.getString("client_id"); @@ -1020,7 +1071,8 @@ public class TradeLogServiceImpl implements TradeLogService { } @Override - public void exportExcel(TradeLogQuery query, JSONObject partner, HttpServletResponse response) throws Exception { + public void exportExcel(TradeLogQuery query, JSONObject partner, HttpServletResponse response) throws + Exception { logger.debug("excel The method======= exportExcel() start......................."); JSONObject transFlow = listPartnerTransFlow(query, partner); JSONObject client = clientManager.getClientInfo(partner.getIntValue("client_id")); @@ -1105,7 +1157,8 @@ public class TradeLogServiceImpl implements TradeLogService { } @Override - public void exportExcelNew(TradeLogQuery query, JSONObject partner, HttpServletResponse response) throws Exception { + public void exportExcelNew(TradeLogQuery query, JSONObject partner, HttpServletResponse response) throws + Exception { logger.debug("excel The method======= exportExcelNew() start......................."); JSONObject transFlow = listPartnerTransFlow(query, partner); JSONObject client = clientManager.getClientInfo(partner.getIntValue("client_id")); @@ -1926,7 +1979,8 @@ public class TradeLogServiceImpl implements TradeLogService { } @Override - public void exportExcelAllPartner(TradeLogQuery query, JSONObject partner, HttpServletResponse resp) throws Exception { + public void exportExcelAllPartner(TradeLogQuery query, JSONObject partner, HttpServletResponse resp) throws + Exception { logger.debug("excel The method======= exportExcel() start......................."); int clientId1 = partner.getIntValue("client_id"); String timezone = partner.getJSONObject("client").getString("timezone"); diff --git a/src/main/java/au/com/royalpay/payment/manage/tradelog/web/ManageTradelogController.java b/src/main/java/au/com/royalpay/payment/manage/tradelog/web/ManageTradelogController.java index f81569efb..a54a2360d 100644 --- a/src/main/java/au/com/royalpay/payment/manage/tradelog/web/ManageTradelogController.java +++ b/src/main/java/au/com/royalpay/payment/manage/tradelog/web/ManageTradelogController.java @@ -27,6 +27,7 @@ public class ManageTradelogController { private TradeLogService tradeLogService; @Resource private ClientManager clientManager; + @RequestMapping(method = RequestMethod.GET) @ReadOnlyConnection @RequireManager(role = {ManagerRole.ADMIN, ManagerRole.BD_USER, ManagerRole.OPERATOR, ManagerRole.FINANCIAL_STAFF, ManagerRole.SERVANT, ManagerRole.DIRECTOR}) @@ -34,7 +35,7 @@ public class ManageTradelogController { return tradeLogService.listAllTradeLogs(query, manager); } - @RequestMapping(value = "/incremental",method = RequestMethod.GET) + @RequestMapping(value = "/incremental", method = RequestMethod.GET) @ReadOnlyConnection @RequireManager(role = {ManagerRole.ADMIN, ManagerRole.BD_USER, ManagerRole.OPERATOR, ManagerRole.FINANCIAL_STAFF, ManagerRole.SERVANT, ManagerRole.DIRECTOR}) public JSONObject listAllIncrementalTradeLogs(TradeLogQuery query, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager) { @@ -52,30 +53,30 @@ public class ManageTradelogController { @ManagerMapping(value = "/report/excel", method = RequestMethod.GET) @ReadOnlyConnection public void exportExcel(TradeLogQuery query, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager, HttpServletResponse httpResponse) throws Exception { - tradeLogService.exportTransLog(query,manager,httpResponse); + tradeLogService.exportTransLog(query, manager, httpResponse); } - @ManagerMapping(value = "/trans_flow",method = RequestMethod.GET,role = {ManagerRole.FINANCIAL_STAFF}) + @ManagerMapping(value = "/trans_flow", method = RequestMethod.GET, role = {ManagerRole.FINANCIAL_STAFF}) @ReadOnlyConnection - public JSONObject listTransFlow(TradeLogQuery query,@RequestParam(required = true) String client_moniker) throws Exception { - return tradeLogService.listPartnerTransFlowPage(query,getPartnerParams(client_moniker)); + public JSONObject listTransFlow(TradeLogQuery query, @RequestParam String client_moniker) throws Exception { + return tradeLogService.listPartnerTransFlowPage(query, getPartnerParams(client_moniker)); } - @ManagerMapping(value = "/trans_flow/pdf", method = RequestMethod.GET,role = {ManagerRole.FINANCIAL_STAFF}) + @ManagerMapping(value = "/trans_flow/pdf", method = RequestMethod.GET, role = {ManagerRole.FINANCIAL_STAFF}) @ReadOnlyConnection - public void exportTransFlowPDF(TradeLogQuery query, @RequestParam(required = true) String client_moniker, HttpServletResponse httpResponse) throws Exception { - tradeLogService.exportTransFlow(query,getPartnerParams(client_moniker),httpResponse); + public void exportTransFlowPDF(TradeLogQuery query, @RequestParam String client_moniker, HttpServletResponse httpResponse) throws Exception { + tradeLogService.exportTransFlow(query, getPartnerParams(client_moniker), httpResponse); } - private JSONObject getPartnerParams(String clientMoniker){ + private JSONObject getPartnerParams(String clientMoniker) { JSONObject client = clientManager.getClientInfoByMoniker(clientMoniker); - if(client==null){ + if (client == null) { throw new NotFoundException("Client Not Exists"); } JSONObject params = new JSONObject(); - params.put("client_id",client.getIntValue("client_id")); - params.put("client",client); - params.put("client_moniker",clientMoniker); + params.put("client_id", client.getIntValue("client_id")); + params.put("client", client); + params.put("client_moniker", clientMoniker); return params; } } diff --git a/src/main/resources/templates/app/invoice.html b/src/main/resources/templates/app/invoice.html index 376e72a54..73555826b 100644 --- a/src/main/resources/templates/app/invoice.html +++ b/src/main/resources/templates/app/invoice.html @@ -1,11 +1,17 @@ - + - - - Invoice + + + + + + + [[${#dates.format((new java.util.Date()), 'dd-MM-yyyy')}]] [[${parmerters.partnerCode}]] Invoice + @@ -103,42 +126,48 @@
-
+ + +
Tunnel Show Pty Ltd trading as RoyalPay
- ABN 16 601 619 685 Representative of AFSL 448066
-
- + ABN 16 601 619 685
+ Representative of AFSL 448066 +

+
-
+
Tax Invoice
-
Merchant code
-
-
Statement
-
-
Issue Date-
-
-
Current
-
+
Merchant code +
+
Statement +
+
+ Issue Date + +
+
Current +
-
- - Your Statement
- +
+ Your Statement
Date/Time -
-
+
Transaction ID
-
+
Debit
@@ -146,15 +175,15 @@ Credit
-
+
Service Fee for RoyalPay (GST inclu)
-
+
Service fee for Mini Program(GST Inclu)
-
+
Settlement Amount
@@ -163,33 +192,30 @@
-
+
-
+
-
-
-
+
-
- +
+
-
- +
+
- - - - \ No newline at end of file + diff --git a/src/main/ui/static/templates/mch_invoice.css b/src/main/ui/static/templates/mch_invoice.css new file mode 100644 index 000000000..32a5b27a1 --- /dev/null +++ b/src/main/ui/static/templates/mch_invoice.css @@ -0,0 +1,108 @@ +.divcontent { + width: 100%; + height: auto; + float: left; + margin: 1px; + align-items: start; + display: flex; + text-align: center; + margin-top: 5%; + margin-left: 5%; + margin-right: 5%; +} + +.divcontent_left { + width: 50%; + height: auto; + text-align: left; + float: left; + white-space: normal; + word-break: break-all; + word-wrap: break-word; +} + +.divcontent_right { + width: 50%; + height: auto; + float: right; + text-align: left; + white-space: normal; + word-break: break-all; + word-wrap: break-word; +} + +.divinvoicesTitle { + width: 100%; + height: auto; + float: left; + background: #FF6600; + display: flex; + align-items: center; + text-align: left; + padding-top: 10px; + padding-bottom: 10px; + color: white; +} + +.divinvoicesContent { + width: 100%; + height: auto; + float: left; + background: white;; + display: flex; + flex-wrap: wrap; + align-items: center; + text-align: left; + padding-top: 10px; + padding-bottom: 10px; + color: black; +} + +.divinvoiceItem { + height: auto; + float: left; + padding-left: 3px; + white-space: normal; + word-break: break-all; + word-wrap: break-word; +} + +.spantitle { + color: #FF6600; + font-size: 20px; + height: auto; + font-weight: bold; +} + +.divSumary { + child-align: middle; + border-bottom: 2px solid #000; + margin-bottom: 10px; + padding-bottom: 10px; + width: 85%; +} + +.spancontent-title { + width: 40%; + float: left; + color: #000000; + font-size: 17px; + font-weight: bold; + vertical-align: center; + +} + +.spancontent-value { + color: #000000; + font-size: 17px; + font-weight: bold; + padding-left: 5px; + vertical-align: center; + +} +.statement_title{ + padding-bottom: 2%; + padding-top: 2%; + float: left; + padding-left: 5%; +}