Merge remote-tracking branch 'origin/develop' into develop

master
yixian 5 years ago
commit cd67cdcd6d

@ -10,7 +10,7 @@
<modelVersion>4.0.0</modelVersion>
<artifactId>manage</artifactId>
<version>1.1.34</version>
<version>1.2.0</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

@ -202,7 +202,7 @@ public interface RetailAppService {
JSONObject getSourceAggregateFile(JSONObject device);
JSONObject getClientAggregateFile(JSONObject device, MultipartFile file) throws IOException;
JSONObject getClientAggregateFile(JSONObject device, MultipartFile file, String ua) throws IOException;
List<JSONObject> uploadGreenChannelAuthFiles(JSONObject device, ClientAuthFilesInfo filesInfo);

@ -48,6 +48,7 @@ import au.com.royalpay.payment.tools.device.message.AppMessage;
import au.com.royalpay.payment.tools.device.message.AppMsgSender;
import au.com.royalpay.payment.tools.device.support.DeviceRegister;
import au.com.royalpay.payment.tools.env.PlatformEnvironment;
import au.com.royalpay.payment.tools.env.RequestEnvironment;
import au.com.royalpay.payment.tools.exceptions.BadRequestException;
import au.com.royalpay.payment.tools.exceptions.ForbiddenException;
import au.com.royalpay.payment.tools.exceptions.NotFoundException;
@ -2295,7 +2296,7 @@ public class RetailAppServiceImp implements RetailAppService {
client.put("cbbank_rate", cbBankPayRate.getBigDecimal("rate_value").setScale(2, BigDecimal.ROUND_DOWN));
}
} catch (Exception ignored) {
throw new BadRequestException("Merchant Rate Not Configure");
throw new BadRequestException("Merchant Rate Not Configure,Please Contact Customer Service");
}
JSONObject bankAccount = getBankAccountByClientId(client.getIntValue("client_id"));
@ -2315,7 +2316,7 @@ public class RetailAppServiceImp implements RetailAppService {
}
@Override
public JSONObject getClientAggregateFile(JSONObject device,MultipartFile file) throws IOException{
public JSONObject getClientAggregateFile(JSONObject device,MultipartFile file, String userAgent) throws IOException{
String clientType = device.getString("client_type");
deviceSupport.findRegister(clientType);
@ -2323,6 +2324,8 @@ public class RetailAppServiceImp implements RetailAppService {
throw new BadRequestException("Please Enter Full Name");
}
JSONObject account = clientAccountMapper.findById(device.getString("account_id"));
account.put("signature_ip", RequestEnvironment.getClientIp());
account.put("user_agent", userAgent);
return clientManager.getClientAggregateFile(account, file);
}

@ -750,8 +750,8 @@ public class RetailAppController {
* @param file url
*/
@RequestMapping(value = "/client/aggregate_file", method = RequestMethod.POST)
public JSONObject getClientAggregateFile(@ModelAttribute(CommonConsts.RETAIL_DEVICE) JSONObject device,@RequestParam MultipartFile file) throws IOException {
return retailAppService.getClientAggregateFile(device, file);
public JSONObject getClientAggregateFile(@ModelAttribute(CommonConsts.RETAIL_DEVICE) JSONObject device,@RequestParam MultipartFile file, @RequestHeader("User-Agent") String ua) throws IOException {
return retailAppService.getClientAggregateFile(device, file, ua);
}
/**

@ -0,0 +1,20 @@
package au.com.royalpay.payment.manage.mappers.system;
import cn.yixblog.support.mybatis.autosql.annotations.AdvanceSelect;
import cn.yixblog.support.mybatis.autosql.annotations.AutoMapper;
import cn.yixblog.support.mybatis.autosql.annotations.AutoSql;
import cn.yixblog.support.mybatis.autosql.annotations.SqlType;
import com.alibaba.fastjson.JSONObject;
import org.apache.ibatis.annotations.Param;
@AutoMapper(tablename = "sys_client_legal_person", pkName = "client_id")
public interface SysClientLegalPersonMapper{
@AutoSql(type = SqlType.INSERT)
void save(JSONObject representativeInfo);
@AutoSql(type = SqlType.UPDATE)
void update(JSONObject representativeInfo);
@AutoSql(type = SqlType.SELECT)
JSONObject findRepresentativeInfo(@Param("client_id") int clientId);
}

@ -57,6 +57,22 @@ public class ClientRegisterInfo {
private String suburb;
private String postcode;
private String state;
@JSONField(name = "legal_representative_person")
private String representativePerson ;
@JSONField(name = "legal_representative_phone")
private String representativePhone;
@JSONField(name = "legal_representative_email")
private String representativeEmail;
@JSONField(name = "legal_representative_job")
private String representativeJobTitle;
@JSONField(name = "registered_address")
private String registeredAddress;
@JSONField(name = "registered_suburb")
private String registeredSuburb;
@JSONField(name = "registered_postcode")
private String registeredPostcode;
@JSONField(name = "registered_state")
private String registeredState;
@NotEmpty(message = "error.payment.valid.param_missing")
private String country;
@Pattern(regexp = "^((Australia/West)|(Australia/Eucla)|(Australia/North)|(Australia/South)|(Australia/Brisbane)|(Australia/Melbourne)|(Australia/LHI))$", message = "error.payment.valid.invalid_timezone")
@ -433,4 +449,68 @@ public class ClientRegisterInfo {
public void setLakalapaysettle(String lakalapaysettle) {
this.lakalapaysettle = lakalapaysettle;
}
public String getRepresentativePerson() {
return representativePerson;
}
public void setRepresentativePerson(String representativePerson) {
this.representativePerson = representativePerson;
}
public String getRepresentativePhone() {
return representativePhone;
}
public void setRepresentativePhone(String representativePhone) {
this.representativePhone = representativePhone;
}
public String getRepresentativeEmail() {
return representativeEmail;
}
public void setRepresentativeEmail(String representativeEmail) {
this.representativeEmail = representativeEmail;
}
public String getRegisteredAddress() {
return registeredAddress;
}
public void setRegisteredAddress(String registeredAddress) {
this.registeredAddress = registeredAddress;
}
public String getRegisteredSuburb() {
return registeredSuburb;
}
public void setRegisteredSuburb(String registeredSuburb) {
this.registeredSuburb = registeredSuburb;
}
public String getRegisteredPostcode() {
return registeredPostcode;
}
public void setRegisteredPostcode(String registeredPostcode) {
this.registeredPostcode = registeredPostcode;
}
public String getRegisteredState() {
return registeredState;
}
public void setRegisteredState(String registeredState) {
this.registeredState = registeredState;
}
public String getRepresentativeJobTitle() {
return representativeJobTitle;
}
public void setRepresentativeJobTitle(String representativeJobTitle) {
this.representativeJobTitle = representativeJobTitle;
}
}

@ -144,6 +144,8 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
@Resource
private ClientConfigService clientConfigService;
@Resource
private SysClientLegalPersonMapper sysClientLegalPersonMapper;
@Resource
private ClientDeviceMapper clientDeviceMapper;
@Resource
private ClientAccountMapper clientAccountMapper;
@ -469,7 +471,9 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
client.put("enable_gateway_version2", partnerGatewaySign.getBooleanValue("is_valid"));
client.put("gateway_sign", partnerGatewaySign);
}
if (sysClientLegalPersonMapper.findRepresentativeInfo(client.getIntValue("client_id")) != null) {
client.put("representativeInfo", sysClientLegalPersonMapper.findRepresentativeInfo(client.getIntValue("client_id")));
}
return client;
}
@ -761,6 +765,23 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
throw new BadRequestException("error.partner.valid.dumplicate_client_moniker");
}
try {
JSONObject representativeInfo = new JSONObject();
representativeInfo.put("client_id",partner.getIntValue("client_id"));
representativeInfo.put("representative_person",partner.getString("legal_representative_person"));
representativeInfo.put("phone",partner.getString("legal_representative_phone"));
representativeInfo.put("email",partner.getString("legal_representative_email"));
representativeInfo.put("job_title",partner.getString("legal_representative_job"));
representativeInfo.put("address",partner.getString("registered_address"));
representativeInfo.put("suburb",partner.getString("registered_suburb"));
representativeInfo.put("postcode",partner.getString("registered_postcode"));
representativeInfo.put("state",partner.getString("registered_state"));
sysClientLegalPersonMapper.save(representativeInfo);
System.out.println("aaaa");
} catch (Exception e) {
throw new BadRequestException("error.partner.valid.dumplicate_client_moniker");
}
if (ManagerRole.BD_USER.hasRole(manager.getIntValue("role"))) {
JSONObject client_bd = new JSONObject();
client_bd.put("client_id", partner.getIntValue("client_id"));
@ -811,6 +832,23 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
}
updateInfo.put("client_id", clientId);
JSONObject representativeInfo = new JSONObject();
representativeInfo.put("client_id",clientId);
representativeInfo.put("representative_person",info.getRepresentativePerson());
representativeInfo.put("phone",info.getRepresentativePhone());
representativeInfo.put("email",info.getRepresentativeEmail());
representativeInfo.put("job_title",info.getRepresentativeJobTitle());
representativeInfo.put("address",info.getRegisteredAddress());
representativeInfo.put("suburb",info.getRegisteredSuburb());
representativeInfo.put("postcode",info.getRegisteredPostcode());
representativeInfo.put("state",info.getRegisteredState());
if(sysClientLegalPersonMapper.findRepresentativeInfo(clientId) != null){
sysClientLegalPersonMapper.update(representativeInfo);
}else{
sysClientLegalPersonMapper.save(representativeInfo);
}
int originReferrerId = client.getIntValue("referrer_id");
int updateReferrerId = Integer.parseInt(info.getReferrer_id() == null ? "0" : info.getReferrer_id());
if (originReferrerId == 0 && updateReferrerId != 0) {
@ -3500,16 +3538,21 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
if (aggregateFiles != null && aggregateFiles.size() > 0) {
clientFilesMapper.deleteAggreeByClientId(clientId);
}
String signatureAccountId = StringUtils.isNotBlank("account_id")?manager.getString("account_id"):manager.getString("manager_id");
JSONObject fileJson = new JSONObject();
fileJson.put("client_id", clientId);
fileJson.put("last_update_date", new Date());
fileJson.put("last_update_by", manager.getString("display_name"));
fileJson.put("file_name", fileType);
fileJson.put("file_value", fileValue);
fileJson.put("signature_time", new Date());
fileJson.put("signature_ip", manager.getString("signature_ip"));
fileJson.put("user_agent", manager.getString("user_agent"));
fileJson.put("signature_account_id", signatureAccountId);
fileJson.put("status", 0);
fileJson.put("is_valid", 1);
clientFilesMapper.save(fileJson);
logger.info(clientId + "的合同文件上传成功" + fileJson.getString("file_id"));
logger.info("{}合同文件上传成功IP:{},us-agent:{},signature_id:{}",clientId,manager.getString("signature_ip"),manager.getString("user_agent"),signatureAccountId);
JSONObject file = new JSONObject();
file.put("file_id", fileJson.getString("file_id"));
file.put("file_value", fileJson.getString("file_value"));

@ -20,6 +20,7 @@ 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.beans.WxOauthType;
import au.com.royalpay.payment.tools.env.RequestEnvironment;
import au.com.royalpay.payment.tools.exceptions.BadRequestException;
import au.com.royalpay.payment.tools.exceptions.ForbiddenException;
import au.com.royalpay.payment.tools.http.HttpUtils;
@ -38,6 +39,7 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
@ -587,7 +589,9 @@ public class PartnerViewController {
@PartnerMapping(value = "/clientCompliance/{clientMoniker}/commit_aggregate_file", method = RequestMethod.POST)
@ResponseBody
public JSONObject getClientArregateFile(@ModelAttribute(CommonConsts.PARTNER_STATUS) JSONObject account, @RequestParam MultipartFile file) throws IOException {
public JSONObject getClientArregateFile(@ModelAttribute(CommonConsts.PARTNER_STATUS) JSONObject account, @RequestParam MultipartFile file, @RequestHeader("User-Agent") String userAgent, HttpServletRequest request) throws IOException {
account.put("signature_ip", RequestEnvironment.getClientIp());
account.put("user_agent", userAgent);
return clientManager.getClientAggregateFile(account, file);
}

@ -166,7 +166,7 @@ public class SignInAccountServiceImpl implements SignInAccountService, Applicati
client.putAll(clientConfigService.find(client_id));
client = clientInfoWithNoSecretInfo(client);
client.put("client_less_file", false);
if (client.getIntValue("client_id") == 9 &&(client.getIntValue("approve_result") == 2 || client.getIntValue("open_status") == 10 || client.getIntValue("approve_result") ==1 || client.getIntValue("open_status") == 5) && client.getIntValue("source")!=4) {
if (client.getIntValue("client_id")==9 && (client.getIntValue("approve_result") == 2 || client.getIntValue("open_status") == 10 || client.getIntValue("approve_result") ==1 || client.getIntValue("open_status") == 5) && client.getIntValue("source")!=4) {
List<JSONObject> clientFiles = clientFilesMapper.findAllClientFile(client.getIntValue("client_id"));
if (clientFiles != null && clientFiles.size() > 0) {
clientFiles = clientFiles.stream().filter(fileJson -> ((fileJson.getIntValue("status") == 1 || fileJson.getIntValue("status") == 2))).collect(Collectors.toList());
@ -644,7 +644,7 @@ public class SignInAccountServiceImpl implements SignInAccountService, Applicati
JSONObject result = new JSONObject();
result.put("client_less_file", false);
result.put("put_fail_pdf", "https://file.royalpay.com.au/open/2019/08/28/1566959635986_P1GuvCkuWINPhUJUqUQnz8E0u6Lgpx.pdf");
if (client.getIntValue("client_id") == 9 &&(client.getIntValue("approve_result") == 2 || client.getIntValue("open_status") == 10 || client.getIntValue("approve_result") == 1 || client.getIntValue("open_status") == 5) && client.getIntValue("source")!=4) {
if (client.getIntValue("client_id")==9 && (client.getIntValue("approve_result") == 2 || client.getIntValue("open_status") == 10 || client.getIntValue("approve_result") == 1 || client.getIntValue("open_status") == 5) && client.getIntValue("source")!=4) {
List<JSONObject> clientFiles = clientFilesMapper.findAllClientFile(client.getIntValue("client_id"));
boolean clientFilesIsLess = false;
for (int i = 0; i < FILE_KEYS.length; i++) {

@ -414,6 +414,37 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
removeClientPayDesc($scope.partner.client_pay_desc, '20');
}
};
$scope.partner.sameAsContactPerson = false;
$scope.checkboxOnclick = function (){
$scope.partner.sameAsContactPerson = !($scope.partner.sameAsContactPerson);
if($scope.partner.sameAsContactPerson)
{
$scope.partner.legal_representative_person = $scope.partner.contact_person;
$scope.partner.legal_representative_phone_a = $scope.partner.contact_phone_a;
$scope.partner.legal_representative_phone_c = $scope.partner.contact_phone_c;
$scope.partner.legal_representative_phone_p = $scope.partner.contact_phone_p;
$scope.partner.legal_representative_email = $scope.partner.contact_email;
}
}
$scope.partner.sameAsAddress=false;
$scope.sameAddress = function (){
$scope.partner.sameAsAddress = !($scope.partner.sameAsAddress);
if($scope.partner.sameAsAddress)
{
$scope.partner.registered_address = $scope.partner.address;
$scope.partner.registered_suburb = $scope.partner.suburb;
$scope.partner.registered_postcode = $scope.partner.postcode;
$scope.partner.registered_state = $scope.partner.state;
}
}
var compare = function (x, y) {
x = parseInt(x);
@ -593,6 +624,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
}
$scope.partner.company_phone = '+' + $scope.partner.company_phone_c + ($scope.partner.company_phone_a || '') + $scope.partner.company_phone_p;
$scope.partner.contact_phone = '+' + $scope.partner.contact_phone_c + ($scope.partner.contact_phone_a || '') + $scope.partner.contact_phone_p;
$scope.partner.legal_representative_phone = '+' + $scope.partner.legal_representative_phone_c + ( $scope.partner.legal_representative_phone_a || '') + $scope.partner.legal_representative_phone_p;
if ($scope.partner.company_phone.indexOf(' ') != -1) {
alert('Company Phone can not contain space character');
@ -602,14 +634,26 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
alert('Contact Phone can not contain space character');
return;
}
if ($scope.partner.legal_representative_phone.indexOf(' ') != -1) {
alert('Representative phone can not contain space character');
return;
}
if ($scope.partner.contact_email.indexOf(' ') != -1) {
alert('Contact email Phone can not contain space character');
return;
}
if ($scope.partner.legal_representative_email.indexOf(' ') != -1) {
alert('Representative email Phone can not contain space character');
return;
}
if ($scope.partner.suburb.indexOf(' ') != -1) {
alert('suburb can not contain two and more continuous space characters');
return;
}
if ($scope.partner.registered_suburb.indexOf(' ') != -1) {
alert('Registered suburb can not contain two and more continuous space characters');
return;
}
if ($scope.partner.acn && $scope.partner.business_structure == 'Company') {
if ($scope.partner.acn.length != 9) {
alert('Acn is not valid');
@ -1231,6 +1275,17 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
function ($scope, $http, $state, Upload, commonDialog, timezone, partner) {
$scope.timezones = timezone.configs();
$scope.partner = partner.data;
if($scope.partner.representativeInfo != null)
{
$scope.partner.registered_address = $scope.partner.representativeInfo.address;
$scope.partner.registered_suburb = $scope.partner.representativeInfo.suburb;
$scope.partner.registered_postcode = $scope.partner.representativeInfo.postcode;
$scope.partner.registered_state = $scope.partner.representativeInfo.state;
$scope.partner.legal_representative_person = $scope.partner.representativeInfo.representative_person;
$scope.partner.legal_representative_phone = $scope.partner.representativeInfo.phone;
$scope.partner.legal_representative_email = $scope.partner.representativeInfo.email;
$scope.partner.legal_representative_job = $scope.partner.representativeInfo.job_title;
}
var origin_referrer_id = angular.copy($scope.partner.referrer_id);
var resetClientPayDescByTpey = function (type) {
type = parseInt(type);
@ -1281,6 +1336,34 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
}
};
$scope.partner.sameAsContactPerson = false;
$scope.checkboxOnclick = function (){
$scope.partner.sameAsContactPerson = !($scope.partner.sameAsContactPerson);
if($scope.partner.sameAsContactPerson)
{
$scope.partner.legal_representative_person = $scope.partner.contact_person;
$scope.partner.legal_representative_phone = $scope.partner.contact_phone;
$scope.partner.legal_representative_email = $scope.partner.contact_email;
}
}
$scope.partner.sameAsAddress=false;
$scope.sameAddress = function (){
$scope.partner.sameAsAddress=!($scope.partner.sameAsAddress);
if($scope.partner.sameAsAddress)
{
$scope.partner.registered_address = $scope.partner.address;
$scope.partner.registered_suburb = $scope.partner.suburb;
$scope.partner.registered_postcode = $scope.partner.postcode;
$scope.partner.registered_state = $scope.partner.state;
}
}
$scope.listReferrers = function () {
$http.get('/sys/orgs/referrer').then(function (resp) {
$scope.referrers = resp.data;
@ -2964,6 +3047,38 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
// $scope.t2city_map = angular.copy(t2city_map);
$scope.partner.sameAsContactPerson = false;
$scope.checkboxOnclick = function (){
$scope.partner.sameAsContactPerson = !($scope.partner.sameAsContactPerson);
if($scope.partner.sameAsContactPerson)
{
$scope.partner.legal_representative_person = $scope.partner.contact_person;
$scope.partner.legal_representative_phone_a = $scope.partner.contact_phone_a;
$scope.partner.legal_representative_phone_c = $scope.partner.contact_phone_c;
$scope.partner.legal_representative_phone_p = $scope.partner.contact_phone_p;
$scope.partner.legal_representative_email = $scope.partner.contact_email;
}
}
$scope.partner.sameAsAddress=false;
$scope.sameAddress = function (){
$scope.partner.sameAsAddress=!($scope.partner.sameAsAddress);
if($scope.partner.sameAsAddress)
{
$scope.partner.registered_address = $scope.partner.address;
$scope.partner.registered_suburb = $scope.partner.suburb;
$scope.partner.registered_postcode = $scope.partner.postcode;
$scope.partner.registered_state = $scope.partner.state;
}
}
$scope.timezones = timezone.configs();
$scope.states = stateMap.configs();
$scope.countries = countryMap.configs();
@ -3007,6 +3122,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
}
$scope.partner.company_phone = '+' + $scope.partner.company_phone_c + ($scope.partner.company_phone_a || '') + $scope.partner.company_phone_p;
$scope.partner.contact_phone = '+' + $scope.partner.contact_phone_c + ($scope.partner.contact_phone_a || '') + $scope.partner.contact_phone_p;
$scope.partner.legal_representative_phone = '+' + $scope.partner.legal_representative_phone_c + ( $scope.partner.legal_representative_phone_a || '') + $scope.partner.legal_representative_phone_p;
if ($scope.partner.company_phone.indexOf(' ') != -1) {
alert('Company Phone can not contain space character');

@ -669,6 +669,121 @@
Characters(including symbols and spaces)</p>
</div>
</div>
<div class="from-group">
<div>
<label><input type="checkbox" ng-click="checkboxOnclick(this)">Legal Representative Same As Contact Information</label>
</div>
</div>
</div><hr/>
</div>
<div>&nbsp;&nbsp;Legal Representative</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group"
ng-class="{'has-error':partnerForm.legal_representative_person.$invalid && partnerForm.legal_representative_person.$dirty}">
<label class="control-label col-sm-2" for="legal_representative_person-input">*
Representative Name</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.legal_representative_person"
required
name="legal_representative_person"
id="legal_representative_person-input" maxlength="50">
<div ng-messages="partnerForm.legal_representative_person.$error"
ng-if="partnerForm.legal_representative_person.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 50
Characters(including symbols and spaces)</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.contact_phone_p.$invalid && partnerForm.contact_phone_p.$dirty}">
<label class="control-label col-sm-2" for="legal_representative_phone_p-input">*
Phone</label>
<div class="col-sm-2">
<div class="input-group">
<div class="input-group-addon">+</div>
<input class="form-control" required type="text"
ng-model="partner.legal_representative_phone_c"
name="legal_representative_phone_c" id="legal_representative_phone_c-input"
maxlength="3" minlength="1"
placeholder="country code">
</div>
<div ng-messages="partnerForm.legal_representative_phone_c.$error"
ng-if="partnerForm.legal_representative_phone_c.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 20 Characters</p>
</div>
</div>
<div class="col-sm-2">
<input class="form-control" type="text"
ng-model="partner.legal_representative_phone_a"
title="eg:3,当为手机号、服务电话时,可以不填"
name="legal_representative_phone_a" id="legal_representative_phone_a-input"
maxlength="2" placeholder="area code">
<div ng-messages="partnerForm.legal_representative_phone_a.$error"
ng-if="partnerForm.legal_representative_phone_a.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 2 Characters</p>
</div>
</div>
<div class="col-sm-4">
<input class="form-control" required type="text"
ng-model="partner.legal_representative_phone_p"
name="legal_representative_phone_p" id="legal_representative_phone_p-input"
maxlength="11" placeholder="phone number">
<div ng-messages="partnerForm.legal_representative_phone_p.$error"
ng-if="partnerForm.legal_representative_phone_p.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 11 Characters</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.legal_representative_email.$invalid && partnerForm.legal_representative_email.$dirty}">
<label class="control-label col-sm-2" for="legal_representative_email-id">*
E-mail</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.legal_representative_email"
required
name="legal_representative_email" id="legal_representative_email-id"
maxlength="50">
</div>
<div ng-messages="partnerForm.legal_representative_email.$error"
ng-if="partnerForm.legal_representative_email.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 50
Characters(including symbols and spaces)</p>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.legal_representative_job.$invalid && partnerForm.legal_representative_job.$dirty}">
<label class="control-label col-sm-2" for="legal_representative_job-id">*
Job title</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.legal_representative_job"
required
name="legal_representative_job" id="legal_representative_job-id"
maxlength="50">
</div>
<div ng-messages="partnerForm.legal_representative_email.$error"
ng-if="partnerForm.legal_representative_email.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 50
Characters(including symbols and spaces)</p>
</div>
</div>
</div>
</div>
</div>
@ -794,6 +909,94 @@
<!--</div>-->
</div>
</div>
<div>
<label><input type="checkbox" ng-click="sameAddress()"> Registered Office Address Same As Trading Address</label>
</div>
</div>
</div>
<hr/>
<div>&nbsp;&nbsp;Registered Office Address</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.address.$invalid && partnerForm.address.$dirty}">
<label class="control-label col-sm-4" for="registered_address-input">*
Registered Office Address</label>
<div class="col-sm-8">
<textarea class="form-control" ng-model="partner.registered_address"
name="registered_address"
id="registered_address-input" maxlength="200" required></textarea>
<div ng-messages="partnerForm.registered_address.$error"
ng-if="partnerForm.registered_address.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 200
Characters(including symbols and spaces)</p>
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.registered_suburb.$invalid && partnerForm.registered_suburb.$dirty}">
<label class="control-label col-sm-4" for="registered_suburb-input">*
Suburb</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.registered_suburb"
name="registered_suburb"
id="registered_suburb-input" maxlength="50" required>
<div ng-messages="partnerForm.registered_suburb.$error"
ng-if="partnerForm.registered_suburb.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 50
Characters(including symbols and spaces)</p>
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.registered_postcode.$invalid && partnerForm.registered_postcode.$dirty}">
<label class="control-label col-sm-4" for="registered_postcode-input">*
PostCode</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.registered_postcode"
name="registered_postcode"
id="registered_postcode-input" maxlength="10" required>
<div ng-messages="partnerForm.registered_postcode.$error"
ng-if="partnerForm.registered_postcode.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 10
Characters(including symbols and spaces)</p>
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.registered_state.$invalid && partnerForm.registered_state.$dirty}">
<label class="control-label col-sm-4" for="registered_state-input">*
State</label>
<div class="col-sm-8">
<select class="form-control" name="registered_state" required
ng-model="partner.registered_state"
id="registered_state-input"
ng-options="state.value as state.label for state in states">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.registered_state.$error"
ng-if="partnerForm.registered_state.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
</div>
</div>
<hr/>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-2"
for="tz-select">TimeZone</label>
@ -807,6 +1010,7 @@
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading" style="font-size: larger">Location

@ -575,6 +575,120 @@
</div>
</div>
</div>
<div>
<label><input type="checkbox" ng-click="checkboxOnclick(this)">Legal Representative Same As Contact Information</label>
</div>
</div>
<hr/>
<div>&nbsp;&nbsp;Legal Representative</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group"
ng-class="{'has-error':partnerForm.legal_representative_person.$invalid && partnerForm.legal_representative_person.$dirty}">
<label class="control-label col-sm-2" for="legal_representative_person-input">*
Representative Name</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.legal_representative_person"
required
name="legal_representative_person"
id="legal_representative_person-input" maxlength="50">
<div ng-messages="partnerForm.legal_representative_person.$error"
ng-if="partnerForm.legal_representative_person.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 50
Characters(including symbols and spaces)</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.contact_phone_p.$invalid && partnerForm.contact_phone_p.$dirty}">
<label class="control-label col-sm-2" for="legal_representative_phone_p-input">*
Phone</label>
<div class="col-sm-2">
<div class="input-group">
<div class="input-group-addon">+</div>
<input class="form-control" required type="text"
ng-model="partner.legal_representative_phone_c"
name="legal_representative_phone_c" id="legal_representative_phone_c-input"
maxlength="3" minlength="1"
placeholder="country code">
</div>
<div ng-messages="partnerForm.legal_representative_phone_c.$error"
ng-if="partnerForm.legal_representative_phone_c.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 20 Characters</p>
</div>
</div>
<div class="col-sm-2">
<input class="form-control" type="text"
ng-model="partner.legal_representative_phone_a"
title="eg:3,当为手机号、服务电话时,可以不填"
name="legal_representative_phone_a" id="legal_representative_phone_a-input"
maxlength="2" placeholder="area code">
<div ng-messages="partnerForm.legal_representative_phone_a.$error"
ng-if="partnerForm.legal_representative_phone_a.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 2 Characters</p>
</div>
</div>
<div class="col-sm-4">
<input class="form-control" required type="text"
ng-model="partner.legal_representative_phone_p"
name="legal_representative_phone_p" id="legal_representative_phone_p-input"
maxlength="11" placeholder="phone number">
<div ng-messages="partnerForm.legal_representative_phone_p.$error"
ng-if="partnerForm.legal_representative_phone_p.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 11 Characters</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.legal_representative_email.$invalid && partnerForm.legal_representative_email.$dirty}">
<label class="control-label col-sm-2" for="legal_representative_email-id">*
E-mail</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.legal_representative_email"
required
name="legal_representative_email" id="legal_representative_email-id"
maxlength="50">
</div>
<div ng-messages="partnerForm.legal_representative_email.$error"
ng-if="partnerForm.legal_representative_email.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 50
Characters(including symbols and spaces)</p>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.legal_representative_job.$invalid && partnerForm.legal_representative_job.$dirty}">
<label class="control-label col-sm-2" for="legal_representative_job-id">*
Job title</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.legal_representative_job"
required
name="legal_representative_job" id="legal_representative_job-id"
maxlength="50">
</div>
<div ng-messages="partnerForm.legal_representative_email.$error"
ng-if="partnerForm.legal_representative_email.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 50
Characters(including symbols and spaces)</p>
</div>
</div>
</div>
</div>
</div>
<!--end 商户联系资料-->
@ -668,6 +782,93 @@
<!--</div>-->
</div>
</div>
<div>
<label><input type="checkbox" ng-click="sameAddress()"> Registered Office Address Same As Trading Address</label>
</div>
</div>
</div>
<hr/>
<div>&nbsp;&nbsp;Registered Office Address</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.address.$invalid && partnerForm.address.$dirty}">
<label class="control-label col-sm-4" for="registered_address-input">*
Registered Office Address</label>
<div class="col-sm-8">
<textarea class="form-control" ng-model="partner.registered_address"
name="registered_address"
id="registered_address-input" maxlength="200" required></textarea>
<div ng-messages="partnerForm.registered_address.$error"
ng-if="partnerForm.registered_address.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 200
Characters(including symbols and spaces)</p>
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.registered_suburb.$invalid && partnerForm.registered_suburb.$dirty}">
<label class="control-label col-sm-4" for="registered_suburb-input">*
Suburb</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.registered_suburb"
name="registered_suburb"
id="registered_suburb-input" maxlength="50" required>
<div ng-messages="partnerForm.registered_suburb.$error"
ng-if="partnerForm.registered_suburb.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 50
Characters(including symbols and spaces)</p>
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.registered_postcode.$invalid && partnerForm.registered_postcode.$dirty}">
<label class="control-label col-sm-4" for="registered_postcode-input">*
PostCode</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.registered_postcode"
name="registered_postcode"
id="registered_postcode-input" maxlength="10" required>
<div ng-messages="partnerForm.registered_postcode.$error"
ng-if="partnerForm.registered_postcode.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 10
Characters(including symbols and spaces)</p>
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.registered_state.$invalid && partnerForm.registered_state.$dirty}">
<label class="control-label col-sm-4" for="registered_state-input">*
State</label>
<div class="col-sm-8">
<select class="form-control" name="registered_state" required
ng-model="partner.registered_state"
id="registered_state-input"
ng-options="state.value as state.label for state in states">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.registered_state.$error"
ng-if="partnerForm.registered_state.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
</div>
</div>
<hr/>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-2" for="tz-select">TimeZone</label>
<div class="col-sm-9">

@ -157,11 +157,11 @@
<div class="form-control-static">
<a role="button" class="btn btn-primary"
ng-if="file.client_agree_file.file_value && file.file_company.status != 0 && file.file_company.status!=1 && file.client_less_file"
ui-sref="compliance_contract">Resign The Contract
ui-sref="compliance_contract">Resign The Agreement
</a>
<a role="button" class="btn btn-primary"
ng-if="!file.client_agree_file.file_value && file.file_company.status != 0 && file.file_company.status!=1 && file.client_less_file"
ui-sref="compliance_contract">Sign The Contract</a>
ui-sref="compliance_contract">Sign The Agreement</a>
<a ng-if="file.client_agree_file.file_value" role="button" class="btn-group btn btn-warning"
type="button" ng-href="{{file.client_agree_file.file_value[0].file_value}}"
target="_blank"><i class="fa fa-download"></i></a>

@ -111,7 +111,7 @@
<div class="polaroid">
<div class="rotate_left" style="display: none" id="loading_logo">
<img class="dh" src="static/images/r_logo.svg" alt="RoyalPay" style="width:150px;height:150px;margin-top: 10%;margin-bottom: 10%;"/>
<p style="color: black;font-size: 15px;">The Contract Is In The Process Of Being Made</p>
<p style="color: black;font-size: 15px;">The Agreement Is In The Process Of Being Made</p>
</div>
</div>

@ -732,6 +732,46 @@
</div>
</div>
</div>
<div ng-if="partner.representativeInfo"><hr/>
<div class="panel-heading">Legal Representative</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-2">Representative Name</label>
<div class="col-sm-10">
<p class="form-control-static" ng-bind="partner.representativeInfo.representative_person "></p>
</div>
</div>
<div class="form-group col-sm-6">
<label class="control-label col-sm-4">Phone</label>
<div class="col-sm-8">
<p class="form-control-static" ng-bind="partner.representativeInfo.phone"></p>
</div>
</div>
<div class="form-group col-sm-6">
<label class="control-label col-sm-4">E-mail</label>
<div class="col-sm-8">
<p class="form-control-static">
<span ng-bind="partner.representativeInfo.email"></span>
</p>
</div>
</div>
<div class="form-group col-sm-6">
<label class="control-label col-sm-4">Job Title</label>
<div class="col-sm-8">
<p class="form-control-static">
<span ng-bind="partner.representativeInfo.job_title"></span>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
<!--end 商户联系资料-->
<div class="panel panel-default">
@ -775,6 +815,49 @@
<p class="form-control-static" ng-bind="partner.country"></p>
</div>
</div>
</div>
</div>
<div ng-if="partner.representativeInfo"><hr/>
<div class="panel-heading">Registered Address Information</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group col-sm-6">
<label class="control-label col-sm-4">Registered Address</label>
<div class="col-sm-8">
<p class="form-control-static" ng-bind="partner.representativeInfo.address"></p>
</div>
</div>
<div class="form-group col-sm-6">
<label class="control-label col-sm-4">Suburb</label>
<div class="col-sm-8">
<p class="form-control-static" ng-bind="partner.representativeInfo.suburb"></p>
</div>
</div>
<div class="form-group col-sm-6">
<label class="control-label col-sm-4">PostCode</label>
<div class="col-sm-8">
<p class="form-control-static" ng-bind="partner.representativeInfo.postcode"></p>
</div>
</div>
<div class="form-group col-sm-6">
<label class="control-label col-sm-4">State</label>
<div class="col-sm-8">
<p class="form-control-static" ng-bind="partner.representativeInfo.state"></p>
</div>
</div>
</div>
</div>
<hr/>
</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group ">
<label class="control-label col-sm-2">Timezone</label>
<div class="col-sm-10">

@ -579,6 +579,89 @@
Characters(including symbols and spaces)</p>
</div>
</div>
<div>
<label><input type="checkbox" ng-click="checkboxOnclick(this)">Legal Representative Same As Contact Information</label>
</div>
</div>
</div>
<hr/>
<div>&nbsp;&nbsp;Legal Representative</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group"
ng-class="{'has-error':partnerForm.legal_representative_person.$invalid && partnerForm.legal_representative_person.$dirty}">
<label class="control-label col-sm-2" for="legal_representative_person-input">*
Representative Name</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.legal_representative_person"
required
name="legal_representative_person"
id="legal_representative_person-input" maxlength="50">
<div ng-messages="partnerForm.legal_representative_person.$error"
ng-if="partnerForm.legal_representative_person.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 50
Characters(including symbols and spaces)</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.legal_representative_phone.$invalid && partnerForm.legal_representative_phone.$dirty}">
<label class="control-label col-sm-2" for="legal_representative_phone-input">* Phone</label>
<div class="col-sm-8">
<input type="text" class="form-control" ng-model="partner.legal_representative_phone" required
name="legal_representative_phone" id="legal_representative_phone-input" maxlength="20">
</div>
<div ng-messages="partnerForm.legal_representative_phone.$error"
ng-if="partnerForm.legal_representative_phone.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 20
Characters(including symbols and spaces)</p>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.legal_representative_email.$invalid && partnerForm.legal_representative_email.$dirty}">
<label class="control-label col-sm-2" for="legal_representative_email-id">*
E-mail</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.legal_representative_email"
required
name="legal_representative_email" id="legal_representative_email-id"
maxlength="50">
</div>
<div ng-messages="partnerForm.legal_representative_email.$error"
ng-if="partnerForm.legal_representative_email.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 50
Characters(including symbols and spaces)</p>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.legal_representative_job.$invalid && partnerForm.legal_representative_job.$dirty}">
<label class="control-label col-sm-2" for="legal_representative_job-id">*
Job title</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.legal_representative_job"
required
name="legal_representative_job" id="legal_representative_job-id"
maxlength="50">
</div>
<div ng-messages="partnerForm.legal_representative_email.$error"
ng-if="partnerForm.legal_representative_email.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 50
Characters(including symbols and spaces)</p>
</div>
</div>
</div>
</div>
</div>
@ -679,6 +762,93 @@
<!--</div>-->
<!--</div>-->
<!--</div>-->
<div>
<label><input type="checkbox" ng-click="sameAddress()"> Registered Office Address Same As Trading Address</label>
</div>
</div>
</div>
<hr/>
<div>&nbsp;&nbsp;Registered Office Address</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.address.$invalid && partnerForm.address.$dirty}">
<label class="control-label col-sm-4" for="registered_address-input">*
Registered Office Address</label>
<div class="col-sm-8">
<textarea class="form-control" ng-model="partner.registered_address"
name="registered_address"
id="registered_address-input" maxlength="200" required></textarea>
<div ng-messages="partnerForm.registered_address.$error"
ng-if="partnerForm.registered_address.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 200
Characters(including symbols and spaces)</p>
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.registered_suburb.$invalid && partnerForm.registered_suburb.$dirty}">
<label class="control-label col-sm-4" for="registered_suburb-input">*
Suburb</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.registered_suburb"
name="registered_suburb"
id="registered_suburb-input" maxlength="50" required>
<div ng-messages="partnerForm.registered_suburb.$error"
ng-if="partnerForm.registered_suburb.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 50
Characters(including symbols and spaces)</p>
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.registered_postcode.$invalid && partnerForm.registered_postcode.$dirty}">
<label class="control-label col-sm-4" for="registered_postcode-input">*
PostCode</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.registered_postcode"
name="registered_postcode"
id="registered_postcode-input" maxlength="10" required>
<div ng-messages="partnerForm.registered_postcode.$error"
ng-if="partnerForm.registered_postcode.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 10
Characters(including symbols and spaces)</p>
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.registered_state.$invalid && partnerForm.registered_state.$dirty}">
<label class="control-label col-sm-4" for="registered_state-input">*
State</label>
<div class="col-sm-8">
<select class="form-control" name="registered_state" required
ng-model="partner.registered_state"
id="registered_state-input"
ng-options="state.value as state.label for state in states">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.registered_state.$error"
ng-if="partnerForm.registered_state.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
</div>
</div>
<hr/>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-2" for="tz-select">TimeZone</label>
<div class="col-sm-9">
@ -690,6 +860,9 @@
</div>
</div>
</div>
<span id="merchant_location" hidden>{{merchant_location}}</span>
<div class="panel panel-default">
<div class="panel-heading" style="font-size: larger">Location

@ -7,7 +7,7 @@
<div class="col-sm-12">
<form class="form-horizontal" novalidate name="rate_form">
<div class="form-group">
<label class="control-label col-sm-4">Clean Days</label>
<label class="control-label col-sm-4">Clear Days</label>
<div class="col-sm-6">
<div class="input-group">
<select class="form-control" ng-model="rate.clean_days" id="citySelect" ng-change="changeDays()">

Loading…
Cancel
Save