invoice支持html转pdf

master
taylor.dang 4 years ago
parent c89893d3fb
commit ef2bf3659b

@ -9,10 +9,10 @@
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>manage</artifactId>
<version>2.3.9</version>
<version>2.3.10</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jib-maven-plugin.version>2.2.0</jib-maven-plugin.version>
<jib-maven-plugin.version>2.3.0</jib-maven-plugin.version>
<docker-image.version>${project.version}</docker-image.version>
</properties>

@ -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;
}
}

@ -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();
}

@ -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;

@ -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<JSONObject> logs = transactionMapper.listTransFlowPage(params,
// new PageBounds(query.getPage(), query.getLimit(), Order.formString("transaction_time.desc")));
List<JSONObject> 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<JSONObject> logs = transactionMapper.listTransFlow(params);
TimeZoneUtils.switchTimeZoneToString(logs, timezone, "dd/MM/yyyy HH:mm:ss", Collections.singletonList("transaction_time"));
@ -775,11 +773,10 @@ public class TradeLogServiceImpl implements TradeLogService {
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<JSONObject> dataList = transFlow.getJSONArray("data").toJavaList(JSONObject.class);
JSONObject parmerters = new JSONObject();
parmerters.put("dateFrom", StringUtils.isNotBlank(query.getDatefrom())
@ -833,62 +830,115 @@ 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);
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<JSONObject> 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 {
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"));
@ -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");

@ -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})
@ -57,13 +58,13 @@ public class ManageTradelogController {
@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 {
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})
@ReadOnlyConnection
public void exportTransFlowPDF(TradeLogQuery query, @RequestParam(required = true) String client_moniker, HttpServletResponse httpResponse) throws Exception {
public void exportTransFlowPDF(TradeLogQuery query, @RequestParam String client_moniker, HttpServletResponse httpResponse) throws Exception {
tradeLogService.exportTransFlow(query, getPartnerParams(client_moniker), httpResponse);
}

@ -1,9 +1,15 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Invoice</title>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1"/>
<meta http-equiv="cache-control" content="max-age=0"/>
<meta http-equiv="cache-control" content="no-cache"/>
<meta http-equiv="expires" content="0"/>
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT"/>
<title> [[${#dates.format((new java.util.Date()), 'dd-MM-yyyy')}]] [[${parmerters.partnerCode}]] Invoice</title>
<link rel="stylesheet" href="/static/templates/mch_invoice.css"/>
<style type="text/css">
.divcontent {
width: 100%;
@ -13,8 +19,11 @@
align-items: start;
display: flex;
text-align: center;
margin-top: 5%;
margin-left: 5%;
margin-right: 5%;
}
.divcontent_left {
width: 50%;
height: auto;
@ -24,6 +33,7 @@
word-break: break-all;
word-wrap: break-word;
}
.divcontent_right {
width: 50%;
height: auto;
@ -33,11 +43,12 @@
word-break: break-all;
word-wrap: break-word;
}
.divinvoicesTitle {
width: 100%;
height: auto;
float: left;
background:saddlebrown;
background: #FF6600;
display: flex;
align-items: center;
text-align: left;
@ -45,6 +56,7 @@
padding-bottom: 10px;
color: white;
}
.divinvoicesContent {
width: 100%;
height: auto;
@ -58,6 +70,7 @@
padding-bottom: 10px;
color: black;
}
.divinvoiceItem {
height: auto;
float: left;
@ -66,15 +79,22 @@
word-break: break-all;
word-wrap: break-word;
}
.spantitle {
color: #bf7a12;
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;
@ -93,9 +113,12 @@
vertical-align: center;
}
.hrclass{
background-color: #bf7a12;
height: 1px;
.statement_title {
padding-bottom: 2%;
padding-top: 2%;
float: left;
padding-left: 5%;
}
</style>
</head>
@ -103,36 +126,42 @@
<div class="divcontent">
<div class="divcontent_left">
<img src="https://mpay.royalpay.com.au/static/images/logo_new.jpg" alt="" width="100px" height="100px"/><br/>
<img src="https://mpay.royalpay.com.au/static/images/rp_logo.png" alt="" height="100px"/>
<img th:if="${orgInfo.logo!='none'}" th:src="${orgInfo.logo}" width="100px" height="100px" style="padding-left: 10px"/>
<br/>
<span>Tunnel Show Pty Ltd trading as RoyalPay</span><br/>
<span>ABN 16 601 619 685 Representative of AFSL 448066</span><br/>
<span>ABN 16 601 619 685</span><br/>
<span> Representative of AFSL 448066</span>
<br/><br/>
<span th:text="${parmerters.clientName}"></span><br/>
<span th:text="${parmerters.clientAddress}"></span>
</div>
<div class="divcontent_right">
<div style="padding-bottom: 15px">
<div style="padding-bottom: 10%">
<span class="spantitle">Tax Invoice </span>
</div>
<div class="divSumary"><span class="spancontent-title">Merchant code</span><span class="spancontent-value" th:text="${parmerters.partnerCode}"></span></div>
<hr class="hrclass"/>
<div class="divSumary"> <span class="spancontent-title">Statement</span><span class="spancontent-value" th:text="${parmerters.dateRange}"></span></div>
<hr class="hrclass"/>
<div class="divSumary"> <span class="spancontent-title">Issue Date</span><span class="spancontent-value" >-</span></div>
<hr class="hrclass"/>
<div class="divSumary"> <span class="spancontent-title">Current</span><span class="spancontent-value" th:text="${parmerters.balance}"></span></div>
<hr class="hrclass"/>
<div class="divSumary"><span class="spancontent-title">Merchant code</span><span class="spancontent-value"
th:text="${parmerters.partnerCode}"></span>
</div>
<div class="divSumary"><span class="spancontent-title">Statement</span><span class="spancontent-value"
th:text="${parmerters.dateRange}"></span>
</div>
<div style="padding-bottom: 1px;padding-top:10px;float: left">
<div class="divSumary"><span class="spancontent-title">
Issue Date</span>
<span class="spancontent-value"
th:text="${#dates.format((new java.util.Date()), 'dd-MM-yyyy')}"></span>
</div>
<div class="divSumary"><span class="spancontent-title">Current</span><span class="spancontent-value"
th:text="${parmerters.balance}"></span>
</div>
</div>
</div>
<div class="statement_title">
<span class="spantitle">Your Statement</span><br/>
</div>
<div class="divinvoicesTitle">
<div class="divinvoiceItem" style="width: 16%">
<span>Date/Time</span>
</div>
<div class="divinvoiceItem" style="width: 22%">
<span>Transaction ID</span>
@ -188,8 +217,5 @@
</div>
</div>
</body>
</html>

@ -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%;
}
Loading…
Cancel
Save