# Conflicts: # src/main/java/au/com/royalpay/payment/manage/dev/web/TestController.java # src/main/java/au/com/royalpay/payment/manage/tradelog/core/impls/TradeLogServiceImpl.java # src/main/resources/templates/app/invoice.htmlmaster
commit
4931efd039
@ -0,0 +1,39 @@
|
|||||||
|
package au.com.royalpay.payment.manage.task;
|
||||||
|
|
||||||
|
import au.com.royalpay.payment.manage.system.core.TradeSecureService;
|
||||||
|
import au.com.royalpay.payment.tools.scheduler.SynchronizedScheduler;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
|
import org.springframework.scheduling.annotation.Scheduled;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Calendar;
|
||||||
|
|
||||||
|
@Component
|
||||||
|
@ConditionalOnProperty(value = "app.run-tasks", havingValue = "true")
|
||||||
|
public class SecurePayInvoiceFileTask {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SynchronizedScheduler synchronizedScheduler;
|
||||||
|
@Resource
|
||||||
|
private TradeSecureService tradeSecureService;
|
||||||
|
|
||||||
|
@Scheduled(cron = "0 30 3 1 * *")
|
||||||
|
public void sendSecurePaySettleFile() {
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
|
||||||
|
//获取前一个月第一天
|
||||||
|
Calendar calendar1 = Calendar.getInstance();
|
||||||
|
calendar1.add(Calendar.MONTH, -1);
|
||||||
|
calendar1.set(Calendar.DAY_OF_MONTH,1);
|
||||||
|
String firstDay = sdf.format(calendar1.getTime());
|
||||||
|
//获取前一个月最后一天
|
||||||
|
Calendar calendar2 = Calendar.getInstance();
|
||||||
|
calendar2.set(Calendar.DAY_OF_MONTH, 0);
|
||||||
|
String lastDay = sdf.format(calendar2.getTime());
|
||||||
|
|
||||||
|
synchronizedScheduler.executeProcess("task:securepay_invoice_file_sending", 60_000, () ->
|
||||||
|
tradeSecureService.sendSecurePayInvoiceFile(firstDay,lastDay)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,250 @@
|
|||||||
|
<!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 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> settlement</title>
|
||||||
|
<link rel="stylesheet" href="/static/templates/mch_invoice.css"/>
|
||||||
|
<style type="text/css">
|
||||||
|
@page{
|
||||||
|
size : 300mm 300mm;
|
||||||
|
}
|
||||||
|
.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: 48%;
|
||||||
|
height: auto;
|
||||||
|
text-align: left;
|
||||||
|
float: left;
|
||||||
|
white-space: normal;
|
||||||
|
word-break: break-all;
|
||||||
|
word-wrap: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
.divcontent_right {
|
||||||
|
width: 52%;
|
||||||
|
height: auto;
|
||||||
|
float: right;
|
||||||
|
text-align: left;
|
||||||
|
white-space: normal;
|
||||||
|
word-break: break-all;
|
||||||
|
word-wrap: break-word;
|
||||||
|
padding-top: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.divfoot_right {
|
||||||
|
line-height: 30px;
|
||||||
|
width: 60%;
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
.divinvoiceItem100 {
|
||||||
|
height: auto;
|
||||||
|
float: left;
|
||||||
|
padding-left: 3px;
|
||||||
|
white-space: normal;
|
||||||
|
word-break: break-all;
|
||||||
|
word-wrap: break-word;
|
||||||
|
width:100px;
|
||||||
|
}
|
||||||
|
.divinvoiceItem80 {
|
||||||
|
height: auto;
|
||||||
|
float: left;
|
||||||
|
padding-left: 3px;
|
||||||
|
white-space: normal;
|
||||||
|
word-break: break-all;
|
||||||
|
word-wrap: break-word;
|
||||||
|
width:80px;
|
||||||
|
}
|
||||||
|
.divinvoiceItem {
|
||||||
|
height: auto;
|
||||||
|
float: left;
|
||||||
|
padding-left: 3px;
|
||||||
|
white-space: normal;
|
||||||
|
word-break: break-all;
|
||||||
|
word-wrap: break-word;
|
||||||
|
width:60px;
|
||||||
|
}
|
||||||
|
.divinvoiceItem50 {
|
||||||
|
height: auto;
|
||||||
|
float: left;
|
||||||
|
padding-left: 3px;
|
||||||
|
white-space: normal;
|
||||||
|
word-break: break-all;
|
||||||
|
word-wrap: break-word;
|
||||||
|
width:50px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spantitle {
|
||||||
|
color: #000000;
|
||||||
|
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;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.spanfoot-title{
|
||||||
|
width: 55%;
|
||||||
|
float: left;
|
||||||
|
color: #000000;
|
||||||
|
font-size: 17px;
|
||||||
|
vertical-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spancontent-value {
|
||||||
|
color: #000000;
|
||||||
|
font-size: 17px;
|
||||||
|
font-weight: bold;
|
||||||
|
padding-left: 5px;
|
||||||
|
vertical-align: center;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.spanfoot-value {
|
||||||
|
color: #000000;
|
||||||
|
font-size: 17px;
|
||||||
|
padding-left: 5px;
|
||||||
|
vertical-align: center;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.statement_title {
|
||||||
|
padding-bottom: 2%;
|
||||||
|
padding-top: 2%;
|
||||||
|
float: left;
|
||||||
|
padding-left: 5%;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<!-- 商户信息 -->
|
||||||
|
<div class="divcontent">
|
||||||
|
<div class="divcontent_left">
|
||||||
|
<img src="https://mpay.royalpay.com.au/static/images/rp_logo.png" alt="" style="width: auto;height: 90px" />
|
||||||
|
<img th:if="${orgInfo.logo!='none'}" th:src="${orgInfo.logo}" src="https://mpay.royalpay.com.au/static/images/rp_logo.png" style="padding-left: 30px;margin-bottom:10px;height: 70px;width: auto"/>
|
||||||
|
<br/>
|
||||||
|
<div height="20px"></div>
|
||||||
|
<br/>
|
||||||
|
<span th:text="${parmerters.clientName}" ></span><br/>
|
||||||
|
<span th:text="${parmerters.clientAddress}"></span><br/>
|
||||||
|
<span th:text="${parmerters.clientLocation}"></span>
|
||||||
|
<br/><br/>
|
||||||
|
<!--<span th:text="${parmerters.clientName}"></span><br/>-->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="divcontent_right">
|
||||||
|
<span>Tunnel Show Pty Ltd trading as</span><br/>
|
||||||
|
<span>ABN 16 601 619 685 Representative of AFSL</span><br/>
|
||||||
|
<span>Level 11, 15 William Street, Melbourne, Victoria</span>
|
||||||
|
<br/><br/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="statement_title">
|
||||||
|
<span class="spantitle" th:text="${parmerters.dateRange}"></span><br/>
|
||||||
|
</div>
|
||||||
|
<!-- 列表标题 -->
|
||||||
|
|
||||||
|
<!-- 列表循环 -->
|
||||||
|
<div class="divinvoicesContent">
|
||||||
|
<table border="1" cellspacing="0" cellpadding="0" style="width:1020px;">
|
||||||
|
<tr style="width:1020px;">
|
||||||
|
<th ><span style="font-size: small" class="divinvoiceItem100">Transaction ID</span></th>
|
||||||
|
<th ><span style="font-size: small" class="divinvoiceItem100">Client Order Id</span></th>
|
||||||
|
<th ><span style="font-size: small" class="divinvoiceItem100">Transaction Time</span></th>
|
||||||
|
<th ><span style="font-size: small" class="divinvoiceItem80">Channel</span></th>
|
||||||
|
<th ><span style="font-size: small" class="divinvoiceItem80">Exchange Rate</span></th>
|
||||||
|
<th ><span style="font-size: small" class="divinvoiceItem80">Transaction Type</span></th>
|
||||||
|
<th ><span style="font-size: small" class="divinvoiceItem80">Currency</span></th>
|
||||||
|
<th > <span style="font-size: small" class="divinvoiceItem80">Total Amount</span></th>
|
||||||
|
<th ><span style="font-size: small" class="divinvoiceItem80">Surcharge Rate</span></th>
|
||||||
|
<th ><span style="font-size: small" class="divinvoiceItem">Settle amount</span></th>
|
||||||
|
<th ><span style="font-size: small" class="divinvoiceItem">Transaction Fee</span></th>
|
||||||
|
<th ><span style="font-size: small" class="divinvoiceItem">gst</span></th>
|
||||||
|
</tr>
|
||||||
|
<tr th:each="settlementLogDetail:${settlementLogDetailList}" style="width:1020px" >
|
||||||
|
<td ><span style="font-size: small" class="divinvoiceItem100" th:text="${settlementLogDetail.order_id}"></span></td>
|
||||||
|
<td ><span style="font-size: small" class="divinvoiceItem100" th:text="${settlementLogDetail.client_order_id}"> </span></td>
|
||||||
|
<td ><span style="font-size: small" class="divinvoiceItem100" th:text="${settlementLogDetail.transaction_time}"></span></td>
|
||||||
|
<td ><span style="font-size: small" class="divinvoiceItem80" th:text="${settlementLogDetail.channel}"></span></td>
|
||||||
|
<td ><span style="font-size: small" class="divinvoiceItem80" th:text="${settlementLogDetail.exchange_rate}"></span></td>
|
||||||
|
<td ><span style="font-size: small" class="divinvoiceItem80" th:text="${settlementLogDetail.transaction_type}"></span></td>
|
||||||
|
<td ><span style="font-size: small" class="divinvoiceItem80" th:text="${settlementLogDetail.transaction_currency}"></span></td>
|
||||||
|
<td ><span style="font-size: small" class="divinvoiceItem80" th:text="${settlementLogDetail.transaction_amount}"></span></td>
|
||||||
|
<td ><span style="font-size: small" class="divinvoiceItem80" th:text="${settlementLogDetail.rate}"></span></td>
|
||||||
|
<td ><span style="font-size: small" class="divinvoiceItem" th:text="${settlementLogDetail.settle_amount}"></span></td>
|
||||||
|
<td ><span style="font-size: small" class="divinvoiceItem" th:text="${settlementLogDetail.transaction_fee}"></span></td>
|
||||||
|
<td ><span style="font-size: small" class="divinvoiceItem" th:text="${settlementLogDetail.tax_amount}"></span></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -1,33 +1,35 @@
|
|||||||
.ml-select-box{
|
.ml-select-box {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
height: 300px;
|
height: 300px;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
z-index: 9999;
|
z-index: 9999;
|
||||||
|
background: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ml-select-box ul.select-group{
|
.ml-select-box ul.select-group {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 240px;
|
/* width: 240px; */
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
height: 200px;
|
height: 200px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
list-style: none;
|
list-style: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ml-select-box ul.select-group li{
|
.ml-select-box ul.select-group li {
|
||||||
list-style: none;
|
list-style: none;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: block;
|
display: block;
|
||||||
height: 30px;
|
height: 30px;
|
||||||
line-height: 30px;
|
line-height: 30px;
|
||||||
cursor:pointer;
|
cursor: pointer;
|
||||||
background: #fff;
|
background: #fff;
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
padding: 0 5px;
|
padding: 0 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ml-select-box ul.select-group li:hover,.ml-select-box ul.select-group li.active{
|
.ml-select-box ul.select-group li:hover,
|
||||||
background: #c0c0c0;
|
.ml-select-box ul.select-group li.active {
|
||||||
font-weight: bold;
|
background: #c0c0c0;
|
||||||
}
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
Loading…
Reference in new issue