Merge branch 'wechat-apply-upgrade' into develop

master
dalong306 4 years ago
commit a489380c64

@ -729,25 +729,25 @@ INSERT INTO `royalpay`.`sys_configs`(`config_key`, `config_value`, `config_desc`
alter table sys_wx_merchant_apply modify contact_phone varchar(20) not null;
alter table sys_wx_merchant_apply
add merchant_country_code varchar(3) not null comment '商户国家编码';
add merchant_country_code varchar(5) not null comment '商户国家编码';
alter table sys_wx_merchant_apply
add extra_merchant_type varchar(1) not null comment '商户类型:1.Enterprise 2.Individual';
add extra_merchant_type varchar(15) not null comment '商户类型:1.Enterprise 2.Individual';
alter table sys_wx_merchant_apply
add mcc_code varchar(4) not null comment 'Mcc编码';
alter table sys_wx_merchant_apply
add extra_reg_cer_number varchar(50) not null comment '公司注册文件编号';
add extra_reg_cer_number varchar(50) null comment '公司注册文件编号';
alter table sys_wx_merchant_apply
add extra_reg_cer_exp_date varchar(10) not null comment '公司注册文件日期,格式:yyyy-MM-dd';
add extra_reg_cer_exp_date varchar(10) null comment '公司注册文件日期,格式:yyyy-MM-dd';
alter table sys_wx_merchant_apply
add stores_address varchar(128) not null comment '店铺地址';
add stores_address varchar(128) null comment '店铺地址';
alter table sys_wx_merchant_apply
add business_type varchar(1) not null comment '固定值为3';
add business_type varchar(10) not null comment 'BOTH,OFFLINE,ONLINE,固定值为BOTH';
alter table sys_wx_merchant_apply
add director_name varchar(128) null comment '董事';
@ -766,3 +766,8 @@ alter table sys_wx_merchant_apply
-- 商户表 增加信息
ALTER TABLE `sys_clients`
ADD COLUMN certificat_expire_date date DEFAULT NULL COMMENT '注册证书过期时间';

@ -6,6 +6,7 @@ import com.alibaba.fastjson.annotation.JSONField;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Pattern;
import java.util.Date;
/**
* Created by yixian on 2016-06-29.
@ -129,6 +130,14 @@ public class ClientRegisterInfo {
@JSONField(name = "enable_card_payment")
private boolean enableCardPayment = false;
private String director_name;
private String director_id_number;
private String principal_name;
private String principal_id_number;
private Date certificat_expire_date;//注册证书过期时间
private String mc_code;//微信mccode
public JSONObject insertObject() {
if (industry == null) {
setIndustry("331");
@ -633,4 +642,52 @@ public class ClientRegisterInfo {
public void setEnableCrossPayment(boolean enableCrossPayment) {
this.enableCrossPayment = enableCrossPayment;
}
public String getDirector_name() {
return director_name;
}
public void setDirector_name(String director_name) {
this.director_name = director_name;
}
public String getDirector_id_number() {
return director_id_number;
}
public void setDirector_id_number(String director_id_number) {
this.director_id_number = director_id_number;
}
public String getPrincipal_name() {
return principal_name;
}
public void setPrincipal_name(String principal_name) {
this.principal_name = principal_name;
}
public String getPrincipal_id_number() {
return principal_id_number;
}
public void setPrincipal_id_number(String principal_id_number) {
this.principal_id_number = principal_id_number;
}
public Date getCertificat_expire_date() {
return certificat_expire_date;
}
public void setCertificat_expire_date(Date certificat_expire_date) {
this.certificat_expire_date = certificat_expire_date;
}
public String getMc_code() {
return mc_code;
}
public void setMccode(String mc_code) {
this.mc_code = mc_code;
}
}

@ -22,8 +22,8 @@ public class NewSubMerchantIdApply {
private String merchant_id;
@NotBlank(message = "error.payment.valid.param_missing")
@Length(max = 20)
@JSONField(name = "store_name")
private String merchant_storename;
@JSONField(name = "short_name")
private String merchant_shortname;
@NotBlank(message = "error.payment.valid.param_missing")
@Length(max = 20)
@JSONField(name = "company_phone")
@ -42,19 +42,19 @@ public class NewSubMerchantIdApply {
@Length(max = 10)
@JSONField(name = "industry")
private String business_category;
@NotBlank(message = "error.payment.valid.param_missing")
@Length(max = 128)
@JSONField(name = "company_website")
private String website;
//2020-11-16
@NotBlank(message = "error.payment.valid.param_missing")
@Length(max = 10)
@Length(max = 20)
@JSONField(name = "merchant_type")
private String merchant_type;
@NotBlank(message = "error.payment.valid.param_missing")
@Length(max = 4)
@JSONField(name = "mcc_code")
@Length(max = 7)
@JSONField(name = "mcc_code")//数据库中用的是mc_code
private String mcc_code;
@NotBlank(message = "error.payment.valid.param_missing")
@Length(min = 4, max = 128)
@ -78,16 +78,20 @@ public class NewSubMerchantIdApply {
private String company_register_no;
@NotBlank(message = "error.payment.valid.param_missing")
@Length(min=1 ,max = 10)
@JSONField(name = "company_register_date")
private String company_register_date;
@JSONField(name = "certificat_expire_date")
private String certificat_expire_date;
@NotBlank(message = "error.payment.valid.param_missing")
@JSONField(name = "business_type")
private String business_type;
public JSONObject insertObject(JSONObject client) {
JSONObject params = new JSONObject();
if(StringUtils.isNotEmpty(merchant_name)){
params.put("merchant_name",merchant_name);
}
if(StringUtils.isNotEmpty(merchant_storename)){
params.put("merchant_shortname",merchant_storename);
if(StringUtils.isNotEmpty(merchant_shortname)){
params.put("merchant_shortname",merchant_shortname);
}
if(StringUtils.isNotEmpty(office_phone)){
params.put("office_phone",office_phone);
@ -113,12 +117,12 @@ public class NewSubMerchantIdApply {
if(StringUtils.isNotEmpty(company_register_no)){
params.put("extra_reg_cer_number", company_register_no);
}
if(StringUtils.isNotEmpty(company_register_date)){
params.put("extra_reg_cer_exp_date", company_register_date);
if(StringUtils.isNotEmpty(certificat_expire_date)){
params.put("extra_reg_cer_exp_date", certificat_expire_date);
}
if(StringUtils.isNotEmpty(merchant_type)){
params.put("extra_merchant_type",merchant_type);
if(StringUtils.equals("1",merchant_type)){
if(StringUtils.equals("ENTERPRISE",merchant_type)){
params.put("director_name",legal_director_name);//董事、项目主持人
params.put("director_id_number", director_id_number);
}else{
@ -129,7 +133,10 @@ public class NewSubMerchantIdApply {
if(StringUtils.isNotEmpty(mcc_code)){
params.put("mcc_code", mcc_code);
}
params.put("business_type","3");
if(StringUtils.isNotEmpty(business_type)){
params.put("business_type", business_type);
}
params.put("merchant_country_code","036");//固定值036-澳大利亚国家编码
params.put("merchant_remark",client.getString("client_moniker"));
return params;
@ -139,7 +146,7 @@ public class NewSubMerchantIdApply {
return new JSONObject(){{
put("company_name",subMerchantApplyInfo.getString("merchant_name"));
put("merchant_id",subMerchantApplyInfo.getString("merchant_id"));
put("store_name",subMerchantApplyInfo.getString("merchant_shortname"));
put("short_name",subMerchantApplyInfo.getString("merchant_shortname"));
put("company_phone",subMerchantApplyInfo.getString("office_phone"));
put("contact_person",subMerchantApplyInfo.getString("contact_name"));
put("contact_phone",subMerchantApplyInfo.getString("contact_phone"));
@ -149,16 +156,13 @@ public class NewSubMerchantIdApply {
put("mcc_code",subMerchantApplyInfo.getString("mcc_code"));
put("address",subMerchantApplyInfo.getString("stores_address"));
put("company_register_no",subMerchantApplyInfo.getString("extra_reg_cer_number"));
put("company_register_date",subMerchantApplyInfo.getString("extra_reg_cer_exp_date"));
put("certificat_expire_date",subMerchantApplyInfo.getString("extra_reg_cer_exp_date"));
put("merchant_type",subMerchantApplyInfo.getString("extra_merchant_type"));
if(subMerchantApplyInfo.getString("extra_merchant_type").equals( "1")){
put("representative_person",subMerchantApplyInfo.getString("director_name"));
put("representative_person_id_number",subMerchantApplyInfo.getString("director_id_number"));
}else {
put("marketing_person", subMerchantApplyInfo.getString("principal_name"));
put("marketing_person_id_number", subMerchantApplyInfo.getString("principal_id_number"));
}
put("director_name",subMerchantApplyInfo.getString("director_name"));
put("director_id_number",subMerchantApplyInfo.getString("director_id_number"));
put("principal_name",subMerchantApplyInfo.getString("principal_name"));
put("principal_id_number",subMerchantApplyInfo.getString("principal_id_number"));
put("business_type",subMerchantApplyInfo.getString("business_type"));
}};
}
@ -181,12 +185,12 @@ public class NewSubMerchantIdApply {
this.merchant_name = merchant_name;
}
public String getMerchant_storename() {
return this.merchant_storename;
public String getMerchant_shortname() {
return this.merchant_shortname;
}
public void setMerchant_storename(String merchant_storename) {
this.merchant_storename = merchant_storename;
public void setMerchant_shortname(String merchant_shortname) {
this.merchant_shortname = merchant_shortname;
}
public String getOffice_phone() {
@ -301,11 +305,19 @@ public class NewSubMerchantIdApply {
this.company_register_no = company_register_no;
}
public String getCompany_register_date() {
return company_register_date;
public String getCertificat_expire_date() {
return certificat_expire_date;
}
public void setCertificat_expire_date(String certificat_expire_date) {
this.certificat_expire_date = certificat_expire_date;
}
public String getBusiness_type() {
return business_type;
}
public void setCompany_register_date(String company_register_date) {
this.company_register_date = company_register_date;
public void setBusiness_type(String business_type) {
this.business_type = business_type;
}
}

@ -14,6 +14,7 @@ import au.com.royalpay.payment.channels.wechat.runtime.MpPaymentApi;
import au.com.royalpay.payment.channels.wechat.runtime.WxPayClient;
import au.com.royalpay.payment.channels.wechat.runtime.beans.SubMerchantInfo;
import au.com.royalpay.payment.channels.wechat.runtime.beans.SubMerchantInfoInheritance;
import au.com.royalpay.payment.channels.wechat.runtime.mappers.PaymentChannelMccGoodMapper;
import au.com.royalpay.payment.core.PaymentChannelApi;
import au.com.royalpay.payment.core.beans.EmptyMerchantApplication;
import au.com.royalpay.payment.core.beans.MerchantApplicationResult;
@ -358,7 +359,8 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
private final int REFUSE_CLIENT_TEMPLID = 166108;
@Resource
private PaymentChannelMccGoodMapper paymentChannelMccGoodMapper;
@PostConstruct
public void init() {
tags.add("account");
@ -536,6 +538,10 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
if (representativeInfo != null) {
client.put("representativeInfo", representativeInfo);
}
JSONObject wechatMcc= paymentChannelMccGoodMapper.findWechatPayMccByClientId(client.getIntValue("client_id"));
if (wechatMcc != null) {
client.put("mc_code", wechatMcc.getIntValue("mc_code"));
}
return client;
}
@ -863,9 +869,32 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
} catch (Exception e) {
logger.error("邮件列表添加成员失败", e);
}
saveWechatMcc(partner);
return partner;
}
/**
* mccode
* @param partner
*/
private void saveWechatMcc(JSONObject partner){
JSONObject wxGoodMcc = paymentChannelMccGoodMapper.findWechatPayMccByClientId(partner.getIntValue("client_id"));
if (wxGoodMcc == null || wxGoodMcc.isEmpty()) {
wxGoodMcc = new JSONObject();
wxGoodMcc.put("client_id",partner.getIntValue("client_id"));
wxGoodMcc.put("mc_code",partner.getString("mc_code"));
wxGoodMcc.put("channel","Wechat");
wxGoodMcc.put("creation_date",new Date());
wxGoodMcc.put("creation_by","System");
paymentChannelMccGoodMapper.save(wxGoodMcc);
return;
}
wxGoodMcc.put("mc_code",partner.getString("mc_code"));
paymentChannelMccGoodMapper.update(wxGoodMcc);
}
@Override
@Transactional
public void updateClientRegisterInfo(JSONObject manager, String clientMoniker, ClientRegisterInfo info) {
@ -944,6 +973,8 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
}
clientConfigMapper.update(clientConfig);
clientInfoCacheSupport.clearClientCache(clientId);
client.put("mc_code",info.getMc_code());
saveWechatMcc(client);
}
@Override
@ -5741,7 +5772,9 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
}
Element elem = wxPayClient.querySubMerchant(client.getString("merchant_id"), subMerchantId);
JSONObject object = new JSONObject();
object.put("apply_status", elem.elementText("result_code"));
object.put("response_str", elem.asXML());
return object;
}

@ -106,58 +106,131 @@
"value": "WA"
}
];
// var industryMap = [
// {
// "label": "综合商城 Integrated Store",
// "value": 336
// },
// {
// "label": "食品 Food",
// "value": 335
// },
// {
// "label": "化妆品 Cosmetics",
// "value": 334
// },
// {
// "label": "鞋包服饰 Clothes",
// "value": 327
// },
// {
// "label": "酒店行业 Hospitality industry",
// "value": 328
// },
// {
// "label": "数码电器 Electric appliances",
// "value": 332
// },
// {
// "label": "母婴 Baby and maternal products",
// "value": 333
// },
// {
// "label": "文具/办公用品 Office supplies",
// "value": 337
// },
// {
// "label": "机票行业 Airline tickets industry",
// "value": 339
// },
// {
// "label": "国际物流 International logistics",
// "value": 330
// },
// {
// "label": "教育行业 Education section",
// "value": 329
// },
// {
// "label": "其它服务行业 Other services industry",
// "value": 331
// },
// {
// "label": "其它货物贸易行业 Other goods trade industry",
// "value": 338
// }
// ];
var industryMap = [
{
"label": "综合商城 Integrated Store",
"value": 336
"label": "Shoes&Garments",
"value": "343"
},
{
"label": "食品 Food",
"value": 335
"label": "Comprehensive mall",
"value": "484"
},
{
"label": "化妆品 Cosmetics",
"value": 334
"label": "Food",
"value": "485"
},
{
"label": "鞋包服饰 Clothes",
"value": 327
"label": "Cosmetics",
"value": "486"
},
{
"label": "酒店行业 Hospitality industry",
"value": 328
"label": "Maternal and infant",
"value": "487"
},
{
"label": "数码电器 Electric appliances",
"value": 332
"label": "Digital appliance",
"value": "488"
},
{
"label": "母婴 Baby and maternal products",
"value": 333
"label": "Logistics",
"value": "489"
},
{
"label": "文具/办公用品 Office supplies",
"value": 337
"label": "Education Industry",
"value": "490"
},
{
"label": "机票行业 Airline tickets industry",
"value": 339
"label": "Hotel Industry",
"value": "491"
},
{
"label": "国际物流 International logistics",
"value": 330
"label": "Stationery/office supplies",
"value": "492"
},
{
"label": "教育行业 Education section",
"value": 329
"label": "Air Ticket",
"value": "493"
},
{
"label": "其它服务行业 Other services industry",
"value": 331
"label": "Other trade industry",
"value": "494"
},{
"label": "Overseas Education",
"value": "528"
},
{
"label": "其它货物贸易行业 Other goods trade industry",
"value": 338
"label": "Travel ticket",
"value": "529"
},
{
"label": "Car rental",
"value": "530"
},
{
"label": "International Conference",
"value": "531"
},
{
"label": "Software",
"value": "532"
},
{
"label": "Medical Service",
"value": "533"
}
];

@ -9,6 +9,7 @@ define(['./app',
'./services/chartParser',
'./services/orderService',
'./services/businessStructuresMap',
'./services/businessTypesMap',
'./services/yeepayBusinessContentMap',
'./services/yeepayIndustryMap',
'./services/stateMap',

@ -0,0 +1,24 @@
define(['../app'], function (app) {
'use strict';
var businessTypesMap = [
{
"label": "Both",
"value": "BOTH"
},
{
"label": "Offline scenario",
"value": "OFFLINE"
},
{
"label": "Online scenario",
"value": "ONLINE"
}
];
app.factory('businessTypesMap', function () {
return {
configs: function () {
return businessTypesMap;
}
}
});
});

@ -1,90 +1,163 @@
define(['../app'], function (app) {
'use strict';
// var industryMap = [
// {
// "label": "鞋包服饰",
// "value": "327"
// },
// {
// "label": "机票行业",
// "value": "339"
// },
// {
// "label": "软件服务",
// "value": "356"
// },
// {
// "label": "旅游票务",
// "value": "357"
// },
// {
// "label": "国际租车",
// "value": "358"
// },
// {
// "label": "医疗服务(出国)",
// "value": "359"
// },
// {
// "label": "医疗服务(不出国)",
// "value": "360"
// },
// {
// "label": "留学教育(网络教育)",
// "value": "361"
// },
// {
// "label": "留学教育(一年及以下)",
// "value": "362"
// },
// {
// "label": "其它货物贸易行业",
// "value": "338"
// },
// {
// "label": "文具/办公用品",
// "value": "337"
// },
// {
// "label": "综合商城",
// "value": "336"
// },
// {
// "label": "酒店行业",
// "value": "328"
// },
// {
// "label": "教育行业",
// "value": "329"
// },
// {
// "label": "国际物流",
// "value": "330"
// },
// {
// "label": "数码电器",
// "value": "332"
// },
// {
// "label": "母婴",
// "value": "333"
// },
// {
// "label": "化妆品",
// "value": "334"
// },
// {
// "label": "食品",
// "value": "335"
// },
// {
// "label": "留学教育(一年以上)",
// "value": "363"
// },
// {
// "label": "其它服务行业",
// "value": "331"
// }
// ];
var industryMap = [
{
"label": "鞋包服饰",
"value": "327"
"label": "Shoes&Garments",
"value": "343"
},
{
"label": "机票行业",
"value": "339"
"label": "Comprehensive mall",
"value": "484"
},
{
"label": "软件服务",
"value": "356"
"label": "Food",
"value": "485"
},
{
"label": "旅游票务",
"value": "357"
"label": "Cosmetics",
"value": "486"
},
{
"label": "国际租车",
"value": "358"
"label": "Maternal and infant",
"value": "487"
},
{
"label": "医疗服务(出国)",
"value": "359"
"label": "Digital appliance",
"value": "488"
},
{
"label": "医疗服务(不出国)",
"value": "360"
"label": "Logistics",
"value": "489"
},
{
"label": "留学教育(网络教育)",
"value": "361"
"label": "Education Industry",
"value": "490"
},
{
"label": "留学教育(一年及以下)",
"value": "362"
"label": "Hotel Industry",
"value": "491"
},
{
"label": "其它货物贸易行业",
"value": "338"
"label": "Stationery/office supplies",
"value": "492"
},
{
"label": "文具/办公用品",
"value": "337"
"label": "Air Ticket",
"value": "493"
},
{
"label": "综合商城",
"value": "336"
"label": "Other trade industry",
"value": "494"
},{
"label": "Overseas Education",
"value": "528"
},
{
"label": "酒店行业",
"value": "328"
"label": "Travel ticket",
"value": "529"
},
{
"label": "教育行业",
"value": "329"
"label": "Car rental",
"value": "530"
},
{
"label": "国际物流",
"value": "330"
"label": "International Conference",
"value": "531"
},
{
"label": "数码电器",
"value": "332"
"label": "Software",
"value": "532"
},
{
"label": "母婴",
"value": "333"
},
{
"label": "化妆品",
"value": "334"
},
{
"label": "食品",
"value": "335"
},
{
"label": "留学教育(一年以上)",
"value": "363"
},
{
"label": "其它服务行业",
"value": "331"
"label": "Medical Service",
"value": "533"
}
];
app.factory('industryMap', function () {

File diff suppressed because it is too large Load Diff

@ -24,7 +24,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
url: '/{clientMoniker}/edit',
params: {"commitCardPayment": false, commitCrossBorderPayment: false},
templateUrl: '/static/payment/partner/templates/partner_edit.html',
controller: 'partnerEditCtrl',
controller: 'partnerEditCtrl2',
resolve: {
partner: ['$http', '$stateParams', function ($http, $stateParams) {
return $http.get('/sys/partners/' + $stateParams.clientMoniker);
@ -32,7 +32,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
}
})
}]);
app.controller('addPartnerCtrl', ['$rootScope', '$scope', '$http', '$state', 'Upload', 'commonDialog', 'timezone', 'businessStructuresMap', 'upayIndustryMap', 'industryMap', 'stateMap', 'sectorMap', 'countryMap', function ($rootScope, $scope, $http, $state, Upload, commonDialog, timezone, businessStructuresMap, upayIndustryMap, industryMap, stateMap, sectorMap, countryMap) {
app.controller('addPartnerCtrl', ['$rootScope', '$scope', '$http', '$state', 'Upload', 'commonDialog', 'timezone', 'businessStructuresMap', 'upayIndustryMap', 'industryMap', 'stateMap', 'sectorMap', 'countryMap','wechatGoodMcc', function ($rootScope, $scope, $http, $state, Upload, commonDialog, timezone, businessStructuresMap, upayIndustryMap, industryMap, stateMap, sectorMap, countryMap,wechatGoodMcc) {
if ($scope.partner_application) {
$scope.partner = angular.copy($scope.partner_application);
delete $rootScope.partner_application;
@ -152,6 +152,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
};
$scope.pagination = {};
$scope.industries = industryMap.configs();
$scope.wechatMccIndustries = wechatGoodMcc.configs();
$scope.upayIndustrys = upayIndustryMap.configs();
$scope.states = stateMap.configs();
$scope.countries = countryMap.configs();
@ -227,6 +228,10 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
});
return;
}
if (!$scope.partner.business_structure||$scope.partner.business_structure == '') {
alert('Please select the business structure');
return;
}
if (!$scope.partner.enable_cross_payment && !$scope.partner.enable_card_payment) {
alert("商户至少开通一种支付方式,请检查是否选择了跨境支付或卡支付!");
return;
@ -436,11 +441,20 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
}
}
}]);
app.controller('partnerEditCtrl', ['$scope', '$http', '$state', 'Upload', 'commonDialog', 'timezone', 'partner','upayIndustryMap',
function ($scope, $http, $state, Upload, commonDialog, timezone, partner,upayIndustryMap) {
app.controller('partnerEditCtrl2', ['$scope', '$http', '$state', 'Upload', 'commonDialog', 'timezone', 'partner','upayIndustryMap','wechatGoodMcc',
function ($scope, $http, $state, Upload, commonDialog, timezone, partner,upayIndustryMap,wechatGoodMcc) {
$scope.upayIndustrys = upayIndustryMap.configs();
$scope.timezones = timezone.configs();
$scope.wechatMccIndustries = wechatGoodMcc.configs();
$scope.partner = partner.data;
if(partner.data.certificat_expire_date) {
var datestr = partner.data.certificat_expire_date.replace(/-/g, '/');
$scope.partner.certificat_expire_date=new Date(datestr);
}
if($scope.partner.mc_code ){
$scope.partner.mc_code=parseInt($scope.partner.mc_code);
}
if (!$scope.partner.client_type) {
$scope.partner.client_type = 'cross-border';
}

@ -30,180 +30,128 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
{code: 2, label: 'Manager'},
{code: 3, label: 'Cashier'}
];
// var wxMerchantIndustries = [
// {
// "label": "鞋包服饰|Shoes&Garments",
// "value": "343"
// },
// {
// "label": "机票行业|Air Ticket",
// "value": "493"
// },
// {
// "label": "文具/办公用品|Stationery/office supplies",
// "value": "492"
// },
// {
// "label": "酒店行业|Hotel Industry",
// "value": "491"
// },
// {
// "label": "教育行业|Education Industry",
// "value": "490"
// },
// {
// "label": "国际物流|Logistics",
// "value": "489"
// },
// {
// "label": "数码电器|Digital appliance",
// "value": "488"
// },
// {
// "label": "母婴|Maternal and infant",
// "value": "487"
// },
// {
// "label": "化妆品|Cosmetics",
// "value": "486"
// },
// {
// "label": "食品|Food",
// "value": "485"
// },
// {
// "label": "综合商城|Comprehensive mall",
// "value": "484"
// },
// {
// "label": "其它货物贸易行业|Other trade industry",
// "value": "494"
// }
// ];
var wxMerchantIndustries = [
{
"label": "鞋包服饰|Shoes&Garments",
"label": "Shoes&Garments",
"value": "343"
},
{
"label": "机票行业|Air Ticket",
"value": "493"
},
{
"label": "文具/办公用品|Stationery/office supplies",
"value": "492"
},
{
"label": "酒店行业|Hotel Industry",
"value": "491"
},
{
"label": "教育行业|Education Industry",
"value": "490"
},
{
"label": "国际物流|Logistics",
"value": "489"
},
{
"label": "数码电器|Digital appliance",
"value": "488"
},
{
"label": "母婴|Maternal and infant",
"value": "487"
},
{
"label": "化妆品|Cosmetics",
"value": "486"
},
{
"label": "食品|Food",
"value": "485"
},
{
"label": "综合商城|Comprehensive mall",
"label": "Comprehensive mall",
"value": "484"
},
{
"label": "其它货物贸易行业|Other trade industry",
"value": "494"
}
];
var newWxMerchantIndustries = [
{
"label": "Online shopping",
"value": "648"
},
{
"label": "Supermarket",
"value": "649"
},
{
"label": "Convenience Store",
"value": "651"
"label": "Food",
"value": "485"
},
{
"label": "Duty-free Shop",
"value": "652"
"label": "Cosmetics",
"value": "486"
},
{
"label": "Pharmacy",
"value": "653"
"label": "Maternal and infant",
"value": "487"
},
{
"label": "Vending Machine",
"value": "654"
"label": "Digital appliance",
"value": "488"
},
{
"label": "Department Store /Shopping Centre",
"value": "655"
"label": "Logistics",
"value": "489"
},
{
"label": "Food/Beverages",
"value": "656"
"label": "Education Industry",
"value": "490"
},
{
"label": "Catering Services",
"value": "657"
"label": "Hotel Industry",
"value": "491"
},
{
"label": "Furniture/Household Products",
"value": "658"
"label": "Stationery/office supplies",
"value": "492"
},
{
"label": "Home Appliances/Camera Equipment/Office Equipment",
"value": "659"
"label": "Air Ticket",
"value": "493"
},
{
"label": "Beauty/Personal Care Products",
"value": "660"
"label": "Other trade industry",
"value": "494"
},{
"label": "Flowers/Plants/Interior Decorations/Decorations",
"value": "661"
},
{
"label": "Nursery Products/Toys",
"value": "662"
},
{
"label": "Clothing/Shoes/Other Accessories",
"value": "663"
},
{
"label": "Sports/Fitness Equipment/Security",
"value": "664"
"label": "Overseas Education",
"value": "528"
},
{
"label": "Watches/Eyewear/Jewellery",
"value": "665"
"label": "Travel ticket",
"value": "529"
},
{
"label": "Outdoor Products /Travel Products",
"value": "666"
"label": "Car rental",
"value": "530"
},
{
"label": "Books / Records / Stationery / Musical Instruments",
"value": "667"
"label": "International Conference",
"value": "531"
},
{
"label": "Flight ticket/ticketing agent",
"value": "668"
"label": "Software",
"value": "532"
},
{
"label": "Sightseeing Passes",
"value": "669"
},
{
"label": "Hotel/Resor",
"value": "670"
},
{
"label": "Online Books/Video/Music",
"value": "671"
},
{
"label": "Online games (Download)",
"value": "672"
},
{
"label": "University Education",
"value": "677"
},
{
"label": "Private hospitals/Clinics/Medical institutions",
"value": "678"
},
{
"label": "Public hospitals/Medical Institutions",
"value": "679"
},
{
"label": "Public transit",
"value": "680"
},
{
"label": "Car Rental",
"value": "681"
},
{
"label": "Logistics/ Courier Service",
"value": "684"
},
{
"label": "Telecommunication Services",
"value": "690"
"label": "Medical Service",
"value": "533"
}
];
var removeClientPayDesc = function (items, key) {
@ -1018,6 +966,9 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
$scope.isComplianceOfShortName = false;
$scope.isComplianceOfBusinessStructure = false;
$scope.cardPromotionaparams = {};
if($scope.partner.mc_code ){
$scope.partner.mc_code=parseInt($scope.partner.mc_code);
}
var website = partner.data.company_website;
if (website != null) {
if (website.indexOf('http') !== 0) {
@ -2540,8 +2491,8 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
$scope.paymentInfo.sub_merchant_id
$http.get('/sys/partners/'+$scope.paymentInfo.client_moniker+'/get_merchant_ids/'+$scope.paymentInfo.sub_merchant_id+'/status').then(function (resp) {
commonDialog.alert({
title: 'Wechat Apply Status',
content: resp.data.apply_status,
title: 'Wechat Apply Status('+resp.data.apply_status+")",
content: resp.data.response_str,
type: 'info'
})
})
@ -3187,8 +3138,8 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
}
}]);
app.controller('partnerNewSubPartnerDialogCtrl', ['$rootScope', '$scope', '$http', '$state', 'Upload', 'commonDialog', 'timezone',
'clientMoniker', 'industryMap', 'businessStructuresMap', 'stateMap', 'countryMap',
function ($rootScope, $scope, $http, $state, Upload, commonDialog, timezone, clientMoniker, industryMap, businessStructuresMap, stateMap, countryMap) {
'clientMoniker', 'industryMap', 'businessStructuresMap', 'stateMap', 'countryMap','wechatGoodMcc',
function ($rootScope, $scope, $http, $state, Upload, commonDialog, timezone, clientMoniker, industryMap, businessStructuresMap, stateMap, countryMap,wechatGoodMcc) {
if ($scope.partner_application) {
$scope.partner = angular.copy($scope.partner_application);
delete $rootScope.partner_application;
@ -3209,6 +3160,8 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
$scope.partner.client_pay_desc = [];
$scope.merchantIsValid = false;
$scope.merchantCodeChecked = false;
$scope.wechatMccIndustries = wechatGoodMcc.configs();
var resetClientPayDescByTpey = function (type) {
type = parseInt(type);
if (type == 1) {
@ -3395,6 +3348,10 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
return;
}
$scope.errmsg = null;
if (!$scope.partner.business_structure||$scope.partner.business_structure == '') {
alert('Please select the business structure');
return;
}
if ($scope.partner.company_name.indexOf("Migration") != -1) {
alert("Company Name包含敏感词汇请检查后重新提交");
return;
@ -3439,10 +3396,10 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
return;
}
}
if (!$scope.partner.logo_url) {
alert("Logo is necessary!");
return;
}
// if (!$scope.partner.logo_url) {
// alert("Logo is necessary!");
// return;
// }
if ($scope.partner.client_pay_type.indexOf('2') >= 0) {
if (!$scope.partner.company_photo) {
alert('Shop Photo1 is necessary');
@ -5555,12 +5512,40 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
})
}
}]);
app.controller('newApplyWxSubMerchantIdCtrl', ['$scope', '$http', '$uibModal', '$state', 'subMerchantInfo', '$filter', 'merchantIds', 'commonDialog','wechatGoodMcc', function ($scope, $http, $uibModal, $state, subMerchantInfo, $filter, merchantIds, commonDialog,wechatGoodMcc) {
app.controller('newApplyWxSubMerchantIdCtrl', ['$scope', '$http', '$uibModal', '$state', 'subMerchantInfo', '$filter', 'merchantIds', 'commonDialog','wechatGoodMcc','businessTypesMap', function ($scope, $http, $uibModal, $state, subMerchantInfo, $filter, merchantIds, commonDialog,wechatGoodMcc,businessTypesMap) {
$scope.wxIndustries = angular.copy(wxMerchantIndustries);
$scope.subMerchantInfo = angular.copy(subMerchantInfo);
$scope.subMerchantInfo.company_register_no=subMerchantInfo.abn?subMerchantInfo.abn:subMerchantInfo.acn;
$scope.wechatMccIndustries = wechatGoodMcc.configs();
$scope.merchantIds = merchantIds.data;
$scope.subMerchantInfo.industry = $filter('wxindustries')($scope.subMerchantInfo.industry);
$scope.businessTypesMap=businessTypesMap.configs();
if ($scope.subMerchantInfo.client_pay_type) {
if ($scope.subMerchantInfo.client_pay_type.indexOf('1') >= 0&&$scope.subMerchantInfo.client_pay_type.indexOf('2') >= 0) {
$scope.subMerchantInfo.business_type='BOTH';
}
else if ($scope.subMerchantInfo.client_pay_type.indexOf('1') >= 0) {
$scope.subMerchantInfo.business_type='ONLINE';
}
else if ($scope.subMerchantInfo.client_pay_type.indexOf('2') >= 0) {
$scope.subMerchantInfo.business_type='OFFLINE';
}
}else{
$scope.subMerchantInfo.business_type='BOTH';
}
if($scope.subMerchantInfo.industry) {
$scope.subMerchantInfo.industry = $filter('newWxMerchantsFilter')($scope.subMerchantInfo.industry);
}
if($scope.subMerchantInfo.mc_code) {
$scope.subMerchantInfo.mcc_code =$scope.subMerchantInfo. mc_code;
}
if(subMerchantInfo.certificat_expire_date) {
var datestr = subMerchantInfo.certificat_expire_date.replace(/-/g, '/');
$scope.subMerchantInfo.certificat_expire_date=new Date(datestr);
}
if($scope.subMerchantInfo.business_structure ){
$scope.subMerchantInfo.merchant_type=$scope.subMerchantInfo.business_structure == 'Company'? "ENTERPRISE":"INDIVIDUAL";
}
$scope.saveAppliy = function (form) {
$scope.errmsg = null;
if (form.$invalid) {
@ -5571,11 +5556,11 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
});
return;
}
var merchant_type = $scope.subMerchantInfo.business_structure == 'Company'? 1:2;
// var merchant_type = $scope.subMerchantInfo.business_structure == 'Company'? 1:2;
var params = {
company_name : $scope.subMerchantInfo.company_name,
merchant_id : $scope.subMerchantInfo.merchant_id,
store_name : $scope.subMerchantInfo.store_name,
short_name : $scope.subMerchantInfo.short_name,
office_phone : $scope.subMerchantInfo.office_phone,
contact_person : $scope.subMerchantInfo.contact_person,
contact_phone : $scope.subMerchantInfo.contact_phone,
@ -5583,18 +5568,29 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
contact_email : $scope.subMerchantInfo.contact_email,
industry : $scope.subMerchantInfo.industry,
company_website : $scope.subMerchantInfo.company_website,
merchant_type: merchant_type,
merchant_type: $scope.subMerchantInfo.merchant_type,
mcc_code : $scope.subMerchantInfo.mcc_code,
address: $scope.subMerchantInfo.address,
company_register_no: $scope.subMerchantInfo.company_register_no,
company_register_date: $scope.subMerchantInfo.company_register_date
business_type:$scope.subMerchantInfo.business_type
};
if(merchant_type == 1){
params.director_name = $scope.subMerchantInfo.representative_person;
params.director_id_number = $scope.subMerchantInfo.representative_person_id_number;
if(params.business_type=='ONLINE'){
params.address=null;
}
else if(params.business_type=='OFFLINE'){
params.company_website=null;
}
if(params.merchant_type == 'ENTERPRISE'){
params.director_name = $scope.subMerchantInfo.director_name;
params.director_id_number = $scope.subMerchantInfo.director_id_number;
params.company_register_no = $scope.subMerchantInfo.company_register_no;
params.certificat_expire_date = $scope.subMerchantInfo.certificat_expire_date;
if($scope.subMerchantInfo.certificat_expire_date) {
params.certificat_expire_date = $filter('dateConversionStr')($scope.subMerchantInfo.certificat_expire_date)
}
}else{
params.principal_name = $scope.subMerchantInfo.marketing_person;
params.principal_id_number = $scope.subMerchantInfo.marketing_person_id_number;
params.principal_name = $scope.subMerchantInfo.principal_name;
params.principal_id_number = $scope.subMerchantInfo.principal_id_number;
}
$http.post('/sys/partners/' + $scope.subMerchantInfo.client_moniker + '/new_sub_apply', params).then(function (resp) {
@ -5630,12 +5626,28 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
})
}
}]);
app.controller('updateApplyWxSubMerchantIdCtrl', ['$scope', '$http', '$uibModal', '$state', 'subMerchantInfo', '$filter', 'merchantIds', 'commonDialog','wechatGoodMcc','merchantInfo', function ($scope, $http, $uibModal, $state, subMerchantInfo, $filter, merchantIds, commonDialog,wechatGoodMcc,merchantInfo) {
app.controller('updateApplyWxSubMerchantIdCtrl', ['$scope', '$http', '$uibModal', '$state', 'subMerchantInfo', '$filter', 'merchantIds', 'commonDialog','wechatGoodMcc','merchantInfo', 'businessTypesMap',function ($scope, $http, $uibModal, $state, subMerchantInfo, $filter, merchantIds, commonDialog,wechatGoodMcc,merchantInfo,businessTypesMap) {
$scope.wxIndustries = angular.copy(wxMerchantIndustries);
$scope.subMerchantInfo = angular.copy(subMerchantInfo.data);
$scope.merchantInfo = angular.copy(merchantInfo);
$scope.wechatMccIndustries = wechatGoodMcc.configs();
$scope.merchantIds = merchantIds.data;
$scope.businessTypesMap=businessTypesMap.configs();
if($scope.subMerchantInfo.business_structure ){
$scope.subMerchantInfo.merchant_type=$scope.subMerchantInfo.business_structure == 'Company'? "ENTERPRISE":"INDIVIDUAL";
}
if($scope.subMerchantInfo.industry) {
$scope.subMerchantInfo.industry = $filter('newWxMerchantsFilter')($scope.subMerchantInfo.industry);
}
if($scope.subMerchantInfo.mcc_code ){
$scope.subMerchantInfo.mcc_code=parseInt($scope.subMerchantInfo.mcc_code);
}
if($scope.subMerchantInfo.certificat_expire_date) {
// var datestr = subMerchantInfo.certificat_expire_date.replace(/-/g, '/');
$scope.subMerchantInfo.certificat_expire_date=new Date($scope.subMerchantInfo.certificat_expire_date);
}
$scope.updateApply = function (form) {
$scope.errmsg = null;
if (form.$invalid) {
@ -5649,7 +5661,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
var params = {
company_name : $scope.subMerchantInfo.company_name,
merchant_id : $scope.subMerchantInfo.merchant_id,
store_name : $scope.subMerchantInfo.store_name,
short_name : $scope.subMerchantInfo.short_name,
office_phone : $scope.subMerchantInfo.office_phone,
contact_person : $scope.subMerchantInfo.contact_person,
contact_phone : $scope.subMerchantInfo.contact_phone,
@ -5660,15 +5672,25 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
merchant_type: $scope.subMerchantInfo.merchant_type,
mcc_code : $scope.subMerchantInfo.mcc_code,
address: $scope.subMerchantInfo.address,
company_register_no: $scope.subMerchantInfo.company_register_no,
company_register_date: $scope.subMerchantInfo.company_register_date
business_type:$scope.subMerchantInfo.business_type
};
if($scope.subMerchantInfo.merchant_type == 1){
params.director_name = $scope.subMerchantInfo.representative_person;
params.director_id_number = $scope.subMerchantInfo.representative_person_id_number;
if(params.business_type=='ONLINE'){
params.address=null;
}
else if(params.business_type=='OFFLINE'){
params.company_website=null;
}
if($scope.subMerchantInfo.merchant_type == 'ENTERPRISE'){
params.director_name = $scope.subMerchantInfo.director_name;
params.director_id_number = $scope.subMerchantInfo.director_id_number;
params.company_register_no = $scope.subMerchantInfo.company_register_no;
params.certificat_expire_date = $scope.subMerchantInfo.certificat_expire_date;
if($scope.subMerchantInfo.certificat_expire_date) {
params.certificat_expire_date = $filter('dateConversionStr')($scope.subMerchantInfo.certificat_expire_date)
}
}else{
params.principal_name = $scope.subMerchantInfo.marketing_person;
params.principal_id_number = $scope.subMerchantInfo.marketing_person_id_number;
params.principal_name = $scope.subMerchantInfo.principal_name;
params.principal_id_number = $scope.subMerchantInfo.principal_id_number;
}
$http.put('/sys/partners/' + $scope.merchantInfo.client_moniker + '/get_merchant_ids/'+$scope.subMerchantInfo.merchant_app_id, params).then(function (resp) {
@ -6591,10 +6613,22 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
return industry;
}
});
//将保存的industry 和最新的分类比较,若查不到,返回空
app.filter('newWxMerchantsFilter', function () {
return function (values) {
var industry = null;
angular.forEach(wxMerchantIndustries, function (wxMerchant) {
if (wxMerchant.value == values) {
industry = wxMerchant.value;
}
});
return industry;
}
});
app.filter('newWxMerchants', function () {
return function (values) {
var industry = '';
angular.forEach(newWxMerchantIndustries, function (wxMerchant) {
angular.forEach(wxMerchantIndustries, function (wxMerchant) {
if (wxMerchant.value == values) {
industry = wxMerchant.label;
}
@ -6751,5 +6785,22 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
return value + (tail || ' …');
};
});
app.filter('dateConversionStr',function () {
return function (date) {
var year = date.getFullYear(); //获取完整的年份(4位,1970-????)
var month =date.getMonth() + 1; //获取当前月份(0-11,0代表1月)
var day = date.getDate(); //获取当前日(1-31)
if (month < 10) {
month = "0" + month;
}
if (day < 10) {
day = "0" + day;
}
var dateString = year + "-" + month + "-" + day;
return dateString;
};
}
);
return app;
});

@ -189,19 +189,6 @@
</div>
</div>
</div>
<div class="form-group" ng-if="partner.enable_cross_payment"
ng-class="{'has-error':partnerForm.business_structure.$invalid && partnerForm.business_structure.$dirty}">
<label class="control-label col-sm-2"
for="business-structure-input">Business Structure</label>
<div class="col-sm-8">
<select class="form-control" name="business_structure"
ng-model="partner.business_structure"
id="business-structure-input"
ng-options="structure.value as structure.label for structure in business_structures">
<option value="">Please Choose</option>
</select>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">* Logo</label>
<div class="col-sm-8">
@ -217,9 +204,79 @@
<img ng-src="{{partner.logo_url}}" ng-if="partner.logo_url" style="height: 100px;">
</div>
</div>
<div class="form-group" ng-if="partner.enable_cross_payment"
ng-class="{'has-error':partnerForm.business_structure.$invalid && partnerForm.business_structure.$dirty}">
<label class="control-label col-sm-2"
for="business-structure-input">* Business Structure</label>
<div class="col-sm-8">
<select class="form-control" name="business_structure"
ng-model="partner.business_structure"
id="business-structure-input"
ng-options="structure.value as structure.label for structure in business_structures">
<option value="">Please Choose</option>
</select>
</div>
</div>
<!-- director name 法人姓名 -->
<!--<div class="form-group" ng-if="partner.business_structure == 'Company'"-->
<!--ng-class="{'has-error':partnerForm.director_name.$invalid && partnerForm.director_name.$dirty}">-->
<!--<label class="control-label col-sm-2" for="director_name_input">Director Name</label>-->
<!--<div class="col-sm-8">-->
<!--<input class="form-control" ng-model="partner.director_name" maxlength="128"-->
<!--type="text" name="director_name" id="director_name_input">-->
<!--<div ng-messages="partnerForm.director_name.$error" ng-if="partnerForm.director_name.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--&lt;!&ndash; director id number 法人身份证号&ndash;&gt;-->
<!--<div class="form-group" ng-if="partner.business_structure == 'Company'"-->
<!--ng-class="{'has-error':partnerForm.director_id_number.$invalid && partnerForm.director_id_number.$dirty}">-->
<!--<label class="control-label col-sm-2" for="director_id_number_input">Director ID</label>-->
<!--<div class="col-sm-8">-->
<!--<input class="form-control" ng-model="partner.director_id_number" maxlength="128"-->
<!--type="text" name="director_id_number" id="director_id_number_input">-->
<!--<div ng-messages="partnerForm.director_id_number.$error" ng-if="partnerForm.director_id_number.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--&lt;!&ndash; principal name 负责人姓名 &ndash;&gt;-->
<!--<div class="form-group" ng-if="partner.business_structure != 'Company'"-->
<!--ng-class="{'has-error':partnerForm.principal_name.$invalid && partnerForm.principal_name.$dirty}">-->
<!--<label class="control-label col-sm-2" for="principal_name_input">Principal Name</label>-->
<!--<div class="col-sm-8">-->
<!--<input class="form-control" ng-model="partner.principal_name" maxlength="128"-->
<!--type="text" name="principal_name" id="principal_name_input">-->
<!--<div ng-messages="partnerForm.principal_name.$error" ng-if="partnerForm.principal_name.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--&lt;!&ndash; principal id number 负责人身份证号 &ndash;&gt;-->
<!--<div class="form-group" ng-if="partner.business_structure != 'Company'"-->
<!--ng-class="{'has-error':partnerForm.principal_id_number.$invalid && partnerForm.principal_id_number.$dirty}">-->
<!--<label class="control-label col-sm-2" for="principal_id_number_input">Principal ID Number</label>-->
<!--<div class="col-sm-8">-->
<!--<input class="form-control" ng-model="partner.principal_id_number" maxlength="128"-->
<!--type="text" name="principal_id_number" id="principal_id_number_input">-->
<!--<div ng-messages="partnerForm.principal_id_number.$error" ng-if="partnerForm.principal_id_number.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<div class="form-group"
ng-class="{'has-error':partnerForm.abn.$invalid && partnerForm.abn.$dirty}"
ng-if="partner.business_structure != 'Company' || partner.enable_card_payment">
ng-if="(partner.business_structure != 'Company'&&partner.business_structure != null )|| partner.enable_card_payment">
<label class="control-label col-sm-2" for="abn-input">* ABN</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.abn" type="text"
@ -238,11 +295,11 @@
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.acn.$invalid && partnerForm.acn.$dirty}"
ng-if="partner.business_structure == 'Company' && partner.enable_cross_payment">
<label class="control-label col-sm-2" for="acn-input">ACN</label>
ng-if="(partner.business_structure == 'Company'&&partner.business_structure != null) && partner.enable_cross_payment">
<label class="control-label col-sm-2" for="acn-input">* ACN</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.acn" type="text"
name="acn"
name="acn" required
id="acn-input" maxlength="20">
<div ng-messages="partnerForm.acn.$error"
ng-if="partnerForm.acn.$dirty">
@ -252,6 +309,27 @@
</div>
</div>
</div>
<div class="form-group" ng-if="partner.business_structure == 'Company'&&partner.business_structure != null"
ng-class="{'has-error':partnerForm.certificat_expire_date.$invalid && partnerForm.certificat_expire_date.$dirty}">
<label class="control-label col-sm-2" for="certificat_expire_date_input">* Expiration Date of Registration Certificat</label>
<div class="col-sm-8">
<!--<input class="form-control" ng-model="subMerchantInfo.company_register_date" required maxlength="50"-->
<!--type="text" name="company_register_date" id="company_register_date_input">-->
<div style="display: inline-block">
<input class="form-control" id="certificat_expire_date_input"
ng-model="partner.certificat_expire_date"
uib-datepicker-popup size="10"
required
name="certificat_expire_date"
is-open="certificat_expire_date.open"
ng-click="certificat_expire_date.open=true"
>
</div>
<div ng-messages="partnerForm.certificat_expire_date.$error" ng-if="partnerForm.certificat_expire_date.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.company_phone_p.$invalid && partnerForm.company_phone_p.$dirty}">
<label class="control-label col-sm-2" for="service-phone-p-input">*
@ -1210,7 +1288,7 @@
<div class="form-group" ng-if="partner.enable_cross_payment"
ng-class="{'has-error':partnerForm.industry.$invalid && partnerForm.industry.$dirty}">
<label class="control-label col-sm-2" for="industry-input">
*Wechat Industry</label>
*Wechat Business Category</label>
<div class="col-sm-8">
<select class="form-control" name="industry"
ng-model="partner.industry"
@ -1225,6 +1303,24 @@
</div>
</div>
</div>
<div class="form-group" ng-if="partner.enable_cross_payment"
ng-class="{'has-error':partnerForm.wechatmcc.$invalid && partnerForm.wechatmcc.$dirty}">
<label class="control-label col-sm-2" for="wechatmcc_input">
*Wechat Merchant Category Code</label>
<div class="col-sm-8">
<select class="form-control" name="wechatmcc"
ng-model="partner.mc_code"
id="wechatmcc_input" required
ng-options="mc_code.value as mc_code.label for mc_code in wechatMccIndustries">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.wechatmcc.$error"
ng-if="partnerForm.wechatmcc.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group" ng-if="partner.enable_cross_payment"
ng-class="{'has-error':partnerForm.alipay_category.$invalid && partnerForm.alipay_category.$dirty}">

@ -123,6 +123,63 @@
</select>
</div>
</div>
<!-- director name 法人姓名 -->
<!--<div class="form-group" ng-if="partner.business_structure == 'Company'"-->
<!--ng-class="{'has-error':partnerForm.director_name.$invalid && partnerForm.director_name.$dirty}">-->
<!--<label class="control-label col-sm-2" for="director_name_input">Director Name</label>-->
<!--<div class="col-sm-8">-->
<!--<input class="form-control" ng-model="partner.director_name" maxlength="128"-->
<!--type="text" name="director_name" id="director_name_input">-->
<!--<div ng-messages="partnerForm.director_name.$error" ng-if="partnerForm.director_name.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--&lt;!&ndash; director id number 法人身份证号&ndash;&gt;-->
<!--<div class="form-group" ng-if="partner.business_structure == 'Company'"-->
<!--ng-class="{'has-error':partnerForm.director_id_number.$invalid && partnerForm.director_id_number.$dirty}">-->
<!--<label class="control-label col-sm-2" for="director_id_number_input">Director Id</label>-->
<!--<div class="col-sm-8">-->
<!--<input class="form-control" ng-model="partner.director_id_number" maxlength="128"-->
<!--type="text" name="director_id_number" id="director_id_number_input">-->
<!--<div ng-messages="partnerForm.director_id_number.$error" ng-if="partnerForm.director_id_number.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--&lt;!&ndash; principal name 负责人姓名 &ndash;&gt;-->
<!--<div class="form-group" ng-if="partner.business_structure != 'Company'"-->
<!--ng-class="{'has-error':partnerForm.principal_name.$invalid && partnerForm.principal_name.$dirty}">-->
<!--<label class="control-label col-sm-2" for="principal_name_input">Principal Name</label>-->
<!--<div class="col-sm-8">-->
<!--<input class="form-control" ng-model="partner.principal_name" maxlength="128"-->
<!--type="text" name="principal_name" id="principal_name_input">-->
<!--<div ng-messages="partnerForm.principal_name.$error" ng-if="partnerForm.principal_name.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--&lt;!&ndash; principal id number 负责人身份证号 &ndash;&gt;-->
<!--<div class="form-group" ng-if="partner.business_structure != 'Company'"-->
<!--ng-class="{'has-error':partnerForm.principal_id_number.$invalid && partnerForm.principal_id_number.$dirty}">-->
<!--<label class="control-label col-sm-2" for="principal_id_number_input">Principal ID</label>-->
<!--<div class="col-sm-8">-->
<!--<input class="form-control" ng-model="partner.principal_id_number" maxlength="128"-->
<!--type="text" name="principal_id_number" id="principal_id_number_input">-->
<!--<div ng-messages="partnerForm.principal_id_number.$error" ng-if="partnerForm.principal_id_number.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<div class="form-group">
<label class="control-label col-sm-2">Logo</label>
<div class="col-sm-8">
@ -152,10 +209,10 @@
<!--</div>-->
<div class="form-group"
ng-class="{'has-error':partnerForm.abn.$invalid && partnerForm.abn.$dirty}" ng-if="partner.business_structure != 'Company'">
<label class="control-label col-sm-2" for="abn-input">ABN</label>
<label class="control-label col-sm-2" for="abn-input">* ABN</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.abn" type="text" name="abn"
id="abn-input"
id="abn-input" required
maxlength="20">
<div ng-messages="partnerForm.abn.$error" ng-if="partnerForm.abn.$dirty">
<p class="small text-danger" ng-message="maxlength">Less Than 20
@ -165,9 +222,9 @@
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.acn.$invalid && partnerForm.acn.$dirty}" ng-if="partner.business_structure == 'Company'">
<label class="control-label col-sm-2" for="acn-input">ACN</label>
<label class="control-label col-sm-2" for="acn-input">* ACN</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.acn" type="text" name="acn"
<input class="form-control" ng-model="partner.acn" type="text" name="acn" required
id="acn-input" maxlength="20">
<div ng-messages="partnerForm.acn.$error" ng-if="partnerForm.acn.$dirty">
<p class="small text-danger" ng-message="maxlength">Less Than 20
@ -176,6 +233,28 @@
</div>
</div>
<div class="form-group" ng-if="partner.business_structure == 'Company'"
ng-class="{'has-error':partnerForm.certificat_expire_date.$invalid && partnerForm.certificat_expire_date.$dirty}">
<label class="control-label col-sm-2" for="certificat_expire_date_input">* Expiration Date of Registration Certificat</label>
<div class="col-sm-8">
<!--<input class="form-control" ng-model="subMerchantInfo.company_register_date" required maxlength="50"-->
<!--type="text" name="company_register_date" id="company_register_date_input">-->
<div style="display: inline-block">
<input class="form-control" id="certificat_expire_date_input"
ng-model="partner.certificat_expire_date"
uib-datepicker-popup size="10"
required
name="certificat_expire_date"
is-open="certificat_expire_date.open"
ng-click="certificat_expire_date.open=true"
>
</div>
<div ng-messages="partnerForm.certificat_expire_date.$error" ng-if="partnerForm.certificat_expire_date.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
</div>
</div>
</div>
<!--<div class="form-group"-->
<!--ng-class="{'has-error':partnerForm.sector.$invalid && partnerForm.sector.$dirty}">-->
<!--<label class="control-label col-sm-2" for="sector-input">* Sector</label>-->
@ -1175,7 +1254,7 @@
<div class="form-group"
ng-class="{'has-error':partnerForm.industry.$invalid && partnerForm.industry.$dirty}">
<label class="control-label col-sm-2" for="industry-input">
*Wechat Industry</label>
*Wechat Business Category</label>
<div class="col-sm-8">
<select class="form-control" name="industry"
ng-model="partner.industry"
@ -1190,7 +1269,24 @@
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.wechatmcc.$invalid && partnerForm.wechatmcc.$dirty}">
<label class="control-label col-sm-2" for="wechatmcc_input">
*Wechat Merchant Category Code</label>
<div class="col-sm-8">
<select class="form-control" name="wechatmcc"
ng-model="partner.mc_code"
id="wechatmcc_input" required
ng-options="mc_code.value as mc_code.label for mc_code in wechatMccIndustries">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.wechatmcc.$error"
ng-if="partnerForm.wechatmcc.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.alipay_category.$invalid && partnerForm.alipay_category.$dirty}">
<label class="control-label col-sm-2"
@ -1198,7 +1294,7 @@
<div class="col-sm-8" >
<input class="form-control" id="alipay_category" required
name="alipay_category" readonly
ng-model="partner.alipayindustry"
ng-model="partner.alipayindustry|partner_alipay_industry"
multi-level-select-popup="alipayMccCategory"
on-select="onAlipayMccSelect($selected)"
chose-one-level="false">

@ -42,7 +42,7 @@
ng-class="{'has-error':subForm.merchant_storename.$invalid && subForm.merchant_storename.$dirty}">
<label class="control-label col-sm-3" for="merchant_storename_input">* Merchant Store Name</label>
<div class="col-sm-8">
<input class="form-control" ng-model="subMerchantInfo.store_name"
<input class="form-control" ng-model="subMerchantInfo.short_name"
type="text" name="merchant_storename" id="merchant_storename_input" required maxlength="50">
<div ng-messages="subForm.merchant_storename.$error" ng-if="subForm.merchant_storename.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
@ -69,15 +69,51 @@
<p class="small text-danger" ng-message="maxLength">More than 50</p>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':subForm.businessType.$invalid && subForm.businessType.$dirty}">
<label class="control-label col-sm-3"
for="business_type_input">* Business Type</label>
<div class="col-sm-8">
<select class="form-control" name="businessType"
ng-model="subMerchantInfo.business_type"
id="business_type_input"
ng-options="businessType.value as businessType.label for businessType in businessTypesMap">
<option value="">Please Choose</option>
</select>
<div ng-messages="subForm.businessType.$error" ng-if="subForm.businessType.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
</div>
</div>
</div>
<div class="form-group"
ng-if="subMerchantInfo.business_type=='ONLINE'||subMerchantInfo.business_type=='BOTH'"
ng-class="{'has-error':subForm.company_website.$invalid && subForm.company_website.$dirty}">
<label class="control-label col-sm-3" for="website_input">* Website</label>
<div class="col-sm-8">
<input class="form-control" ng-model="subMerchantInfo.company_website"
type="url" name="website" id="website_input" required maxlength="128">
type="url" name="company_website" id="website_input" required maxlength="128">
<p class="small " >( Not required when business type is Offline scenario)</p>
<div ng-messages="subForm.company_website.$error" ng-if="subForm.company_website.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="url">The beginning of http</p>
</div>
</div>
</div>
<!-- store address 店铺地址 -->
<div class="form-group"
ng-if="subMerchantInfo.business_type=='OFFLINE'||subMerchantInfo.business_type=='BOTH'"
ng-class="{'has-error':subForm.address.$invalid && subForm.address.$dirty}">
<label class="control-label col-sm-3" for="address_input">* Store Address</label>
<div class="col-sm-8">
<input class="form-control" ng-model="subMerchantInfo.address"
type="text" name="address" id="address_input" required maxlength="128">
<p class="small " >(Not required when business type is Online scenario)</p>
<div ng-messages="subForm.address.$error" ng-if="subForm.address.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>
</div>
</div>
</div>
@ -153,22 +189,28 @@
</div>
</div>
<!-- store address 店铺地址 -->
<div class="form-group"
ng-class="{'has-error':subForm.address.$invalid && subForm.address.$dirty}">
<label class="control-label col-sm-3" for="address_input">* Store Address</label>
ng-class="{'has-error':subForm.merchant_type.$invalid && subForm.merchant_type.$dirty}">
<label class="control-label col-sm-3"
for="merchant_type_select">* Merchant Type</label>
<div class="col-sm-8">
<input class="form-control" ng-model="subMerchantInfo.address"
type="text" name="address" id="address_input" required maxlength="128">
<div ng-messages="subForm.address.$error" ng-if="subForm.address.$dirty">
<select class="form-control" ng-model="subMerchantInfo.merchant_type"
id="merchant_type_select"
name="merchant_type" >
<option value="">Please Choose</option>
<option value="ENTERPRISE" >ENTERPRISE</option>
<option value="INDIVIDUAL">INDIVIDUAL</option>
</select>
<div ng-messages="subForm.merchant_type.$error" ng-if="subForm.merchant_type.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>
</div>
</div>
</div>
<!-- 公司注册号 -->
<div class="form-group"
<div class="form-group" ng-if="subMerchantInfo.merchant_type == 'ENTERPRISE'"
ng-class="{'has-error':subForm.company_register_no.$invalid && subForm.company_register_no.$dirty}">
<label class="control-label col-sm-3" for="company_register_no_input">* Company registration document No</label>
<div class="col-sm-8">
@ -181,76 +223,81 @@
</div>
</div>
<!-- 公司注册日期 -->
<div class="form-group"
ng-class="{'has-error':subForm.company_register_date.$invalid && subForm.company_register_date.$dirty}">
<label class="control-label col-sm-3" for="company_register_date_input">* Company registration Date</label>
<!-- 注册证书过期时间 -->
<div class="form-group" ng-if="subMerchantInfo.merchant_type == 'ENTERPRISE'"
ng-class="{'has-error':subForm.certificat_expire_date.$invalid && subForm.certificat_expire_date.$dirty}">
<label class="control-label col-sm-3" for="certificat_expire_date_input">* Expiration Date of Registration Certificat</label>
<div class="col-sm-8">
<input class="form-control" ng-model="subMerchantInfo.company_register_date" required maxlength="50"
type="text" name="company_register_date" id="company_register_date_input">
<div ng-messages="subForm.company_register_date.$error" ng-if="subForm.company_register_date.$dirty">
<input class="form-control" id="certificat_expire_date_input"
ng-model="subMerchantInfo.certificat_expire_date"
uib-datepicker-popup size="10"
required
name="certificat_expire_date"
is-open="certificat_expire_date.open"
ng-click="certificat_expire_date.open=true"
>
<div ng-messages="subForm.certificat_expire_date.$error" ng-if="subForm.certificat_expire_date.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Length is more than 50</p>
</div>
</div>
</div>
<!-- director name 法人姓名 -->
<div class="form-group" ng-if="subMerchantInfo.business_structure == 'Company'"
ng-class="{'has-error':subForm.representative_person.$invalid && subForm.representative_person.$dirty}">
<label class="control-label col-sm-3" for="representative_person_input">* Director Name</label>
<div class="col-sm-8">
<input class="form-control" ng-model="subMerchantInfo.representative_person" required maxlength="128"
type="text" name="representative_person" id="representative_person_input">
<div ng-messages="subForm.representative_person.$error" ng-if="subForm.representative_person.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>
</div>
</div>
</div>
<!--&lt;!&ndash; director name 法人姓名 &ndash;&gt;-->
<!--<div class="form-group" ng-if="subMerchantInfo.merchant_type == 'ENTERPRISE'"-->
<!--ng-class="{'has-error':subForm.director_name.$invalid && subForm.director_name.$dirty}">-->
<!--<label class="control-label col-sm-3" for="director_name_input">Director Name</label>-->
<!--<div class="col-sm-8">-->
<!--<input class="form-control" ng-model="subMerchantInfo.director_name" maxlength="128"-->
<!--type="text" name="director_name" id="director_name_input">-->
<!--<div ng-messages="subForm.director_name.$error" ng-if="subForm.director_name.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!-- director id number 法人身份证号-->
<div class="form-group" ng-if="subMerchantInfo.business_structure == 'Company'"
ng-class="{'has-error':subForm.representative_person_id_number.$invalid && subForm.representative_person_id_number.$dirty}">
<label class="control-label col-sm-3" for="representative_person_id_number_input">* Director Id</label>
<div class="col-sm-8">
<input class="form-control" ng-model="subMerchantInfo.representative_person_id_number" required maxlength="128"
type="text" name="representative_person_id_number" id="representative_person_id_number_input">
<div ng-messages="subForm.representative_person_id_number.$error" ng-if="subForm.representative_person_id_number.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>
</div>
</div>
<!--&lt;!&ndash; director id number 法人身份证号&ndash;&gt;-->
<!--<div class="form-group" ng-if="subMerchantInfo.merchant_type == 'ENTERPRISE'"-->
<!--ng-class="{'has-error':subForm.director_id_number.$invalid && subForm.director_id_number.$dirty}">-->
<!--<label class="control-label col-sm-3" for="director_id_number_input">Director Id</label>-->
<!--<div class="col-sm-8">-->
<!--<input class="form-control" ng-model="subMerchantInfo.director_id_number" maxlength="128"-->
<!--type="text" name="director_id_number" id="director_id_number_input">-->
<!--<div ng-messages="subForm.director_id_number.$error" ng-if="subForm.director_id_number.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
</div>
<!--&lt;!&ndash; principal name 负责人姓名 &ndash;&gt;-->
<!--<div class="form-group" ng-if="subMerchantInfo.merchant_type != 'ENTERPRISE'"-->
<!--ng-class="{'has-error':subForm.principal_name.$invalid && subForm.principal_name.$dirty}">-->
<!--<label class="control-label col-sm-3" for="marketing_person_input">Principal Name</label>-->
<!--<div class="col-sm-8">-->
<!--<input class="form-control" ng-model="subMerchantInfo.principal_name" maxlength="128"-->
<!--type="text" name="principal_name" id="marketing_person_input">-->
<!--<div ng-messages="subForm.principal_name.$error" ng-if="subForm.principal_name.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!-- principal name 负责人姓名 -->
<div class="form-group" ng-if="subMerchantInfo.business_structure != 'Company'"
ng-class="{'has-error':subForm.marketing_person.$invalid && subForm.marketing_person.$dirty}">
<label class="control-label col-sm-3" for="marketing_person_input">* Principal Name</label>
<div class="col-sm-8">
<input class="form-control" ng-model="subMerchantInfo.marketing_person" required maxlength="128"
type="text" name="marketing_person" id="marketing_person_input">
<div ng-messages="subForm.marketing_person.$error" ng-if="subForm.marketing_person.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>
</div>
</div>
</div>
<!-- principal id number 负责人身份证号 -->
<div class="form-group" ng-if="subMerchantInfo.business_structure != 'Company'"
ng-class="{'has-error':subForm.marketing_person_id_number.$invalid && subForm.marketing_person_id_number.$dirty}">
<label class="control-label col-sm-3" for="marketing_person_id_number_input">* Marketing Person Id</label>
<div class="col-sm-8">
<input class="form-control" ng-model="subMerchantInfo.marketing_person_id_number" required maxlength="128"
type="text" name="marketing_person_id_number" id="marketing_person_id_number_input">
<div ng-messages="subForm.marketing_person_id_number.$error" ng-if="subForm.marketing_person_id_number.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>
</div>
</div>
</div>
<!--&lt;!&ndash; principal id number 负责人身份证号 &ndash;&gt;-->
<!--<div class="form-group" ng-if="subMerchantInfo.merchant_type != 'ENTERPRISE'"-->
<!--ng-class="{'has-error':subForm.principal_id_number.$invalid && subForm.principal_id_number.$dirty}">-->
<!--<label class="control-label col-sm-3" for="principal_id_number_input">Principal ID Number</label>-->
<!--<div class="col-sm-8">-->
<!--<input class="form-control" ng-model="subMerchantInfo.principal_id_number" maxlength="128"-->
<!--type="text" name="principal_id_number" id="principal_id_number_input">-->
<!--<div ng-messages="subForm.principal_id_number.$error" ng-if="subForm.principal_id_number.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
</div>
</div>
</div>

@ -560,6 +560,38 @@
</p>
</div>
</div>
<div class="form-group" ng-if="partner.director_name" >
<label
class="control-label col-sm-2">Director Name</label>
<div class="col-sm-10">
<p class="form-control-static" ng-bind="partner.director_name"></p>
</div>
</div>
<div class="form-group" ng-if="partner.director_id_number">
<label
class="control-label col-sm-2">Director Id</label>
<div class="col-sm-10">
<p class="form-control-static" ng-bind="partner.director_id_number"></p>
</div>
</div>
<div class="form-group" ng-if="partner.principal_name">
<label
class="control-label col-sm-2">Principal Name</label>
<div class="col-sm-10">
<p class="form-control-static" ng-bind="partner.principal_name"></p>
</div>
</div>
<div class="form-group" ng-if="partner.principal_id_number">
<label
class="control-label col-sm-2">Principal Id</label>
<div class="col-sm-10">
<p class="form-control-static" ng-bind="partner.principal_id_number"></p>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Logo</label>
<div class="col-sm-10">
@ -579,6 +611,13 @@
<p class="form-control-static" ng-bind="partner.acn"></p>
</div>
</div>
<div class="form-group" >
<label class="control-label col-sm-2">Expiration Date of Registration Certificat</label>
<div class="col-sm-10">
<p class="form-control-static" ng-bind="partner.certificat_expire_date"></p>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Industry</label>
@ -1297,6 +1336,16 @@
</div>
<div class="form-group">
<label class="control-label col-sm-2">Wechat Merchant Category Code</label>
<div class="col-sm-10">
<p class="form-control-static industry-p" ng-if="partner.mc_code">
{{partner.mc_code|wechat_mcc}}
&nbsp;&nbsp;&nbsp;({{partner.mc_code}})
</p>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Alipay Category</label>
<div class="col-sm-10">

@ -236,6 +236,62 @@
</select>
</div>
</div>
<!-- director name 法人姓名 -->
<!--<div class="form-group" ng-if="partner.business_structure == 'Company'"-->
<!--ng-class="{'has-error':partnerForm.director_name.$invalid && partnerForm.director_name.$dirty}">-->
<!--<label class="control-label col-sm-2" for="director_name_input">Director Name</label>-->
<!--<div class="col-sm-8">-->
<!--<input class="form-control" ng-model="partner.director_name" maxlength="128"-->
<!--type="text" name="director_name" id="director_name_input">-->
<!--<div ng-messages="partnerForm.director_name.$error" ng-if="partnerForm.director_name.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--&lt;!&ndash; director id number 法人身份证号&ndash;&gt;-->
<!--<div class="form-group" ng-if="partner.business_structure == 'Company'"-->
<!--ng-class="{'has-error':partnerForm.director_id_number.$invalid && partnerForm.director_id_number.$dirty}">-->
<!--<label class="control-label col-sm-2" for="director_id_number_input">Director Id</label>-->
<!--<div class="col-sm-8">-->
<!--<input class="form-control" ng-model="partner.director_id_number" maxlength="128"-->
<!--type="text" name="director_id_number" id="director_id_number_input">-->
<!--<div ng-messages="partnerForm.director_id_number.$error" ng-if="partnerForm.director_id_number.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--&lt;!&ndash; principal name 负责人姓名 &ndash;&gt;-->
<!--<div class="form-group" ng-if="partner.business_structure != 'Company'"-->
<!--ng-class="{'has-error':partnerForm.principal_name.$invalid && partnerForm.principal_name.$dirty}">-->
<!--<label class="control-label col-sm-2" for="principal_name_input">Principal Name</label>-->
<!--<div class="col-sm-8">-->
<!--<input class="form-control" ng-model="partner.principal_name" maxlength="128"-->
<!--type="text" name="principal_name" id="principal_name_input">-->
<!--<div ng-messages="partnerForm.principal_name.$error" ng-if="partnerForm.principal_name.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--&lt;!&ndash; principal id number 负责人身份证号 &ndash;&gt;-->
<!--<div class="form-group" ng-if="partner.business_structure != 'Company'"-->
<!--ng-class="{'has-error':partnerForm.principal_id_number.$invalid && partnerForm.principal_id_number.$dirty}">-->
<!--<label class="control-label col-sm-2" for="principal_id_number_input">Principal ID Number</label>-->
<!--<div class="col-sm-8">-->
<!--<input class="form-control" ng-model="partner.principal_id_number" maxlength="128"-->
<!--type="text" name="principal_id_number" id="principal_id_number_input">-->
<!--<div ng-messages="partnerForm.principal_id_number.$error" ng-if="partnerForm.principal_id_number.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<div class="form-group" ng-if="!partner.parent_client_id || ('00110'|withRole)">
<label class="control-label col-sm-2">Logo</label>
<div class="col-sm-8">
@ -251,9 +307,9 @@
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.abn.$invalid && partnerForm.abn.$dirty}" ng-if="partner.business_structure != 'Company'">
<label class="control-label col-sm-2" for="abn-input">ABN</label>
<label class="control-label col-sm-2" for="abn-input">* ABN</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.abn" type="text" name="abn"
<input class="form-control" ng-model="partner.abn" type="text" name="abn" required
id="abn-input"
maxlength="20">
<div ng-messages="partnerForm.abn.$error" ng-if="partnerForm.abn.$dirty">
@ -264,9 +320,9 @@
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.acn.$invalid && partnerForm.acn.$dirty}" ng-if="partner.business_structure == 'Company'">
<label class="control-label col-sm-2" for="acn-input">ACN</label>
<label class="control-label col-sm-2" for="acn-input">* ACN</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.acn" type="text" name="acn"
<input class="form-control" ng-model="partner.acn" type="text" name="acn" required
id="acn-input" maxlength="20">
<div ng-messages="partnerForm.acn.$error" ng-if="partnerForm.acn.$dirty">
<p class="small text-danger" ng-message="maxlength">Less Than 20
@ -274,6 +330,27 @@
</div>
</div>
</div>
<div class="form-group" ng-if="partner.business_structure == 'Company'"
ng-class="{'has-error':partnerForm.certificat_expire_date.$invalid && partnerForm.certificat_expire_date.$dirty}">
<label class="control-label col-sm-2" for="certificat_expire_date_input">* Expiration Date of Registration Certificat</label>
<div class="col-sm-8">
<!--<input class="form-control" ng-model="subMerchantInfo.company_register_date" required maxlength="50"-->
<!--type="text" name="company_register_date" id="company_register_date_input">-->
<div style="display: inline-block">
<input class="form-control" id="certificat_expire_date_input"
ng-model="partner.certificat_expire_date"
uib-datepicker-popup size="10"
required
name="certificat_expire_date"
is-open="certificat_expire_date.open"
ng-click="certificat_expire_date.open=true"
>
</div>
<div ng-messages="partnerForm.certificat_expire_date.$error" ng-if="partnerForm.certificat_expire_date.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
</div>
</div>
</div>
<!--<div hidden class="form-group" ng-if="!partner.parent_client_id || ('00010'|withRole)">-->
<!--<label class="control-label col-sm-2" for="sector-input">Sector</label>-->
<!--<div class="col-sm-8">-->
@ -1167,7 +1244,7 @@
<div class="form-group" ng-if="partner.enable_cross_payment"
ng-class="{'has-error':partnerForm.industry.$invalid && partnerForm.industry.$dirty}">
<label class="control-label col-sm-2" for="industry-input">
*Wechat Industry</label>
*Wechat Business Category</label>
<div class="col-sm-8">
<select class="form-control" name="industry"
ng-model="partner.industry"
@ -1183,6 +1260,25 @@
</div>
</div>
<div class="form-group" ng-if="partner.enable_cross_payment"
ng-class="{'has-error':partnerForm.wechatmcc.$invalid && partnerForm.wechatmcc.$dirty}">
<label class="control-label col-sm-2" for="wechatmcc_input">
*Wechat Merchant Category Code</label>
<div class="col-sm-8">
<select class="form-control" name="wechatmcc"
ng-model="partner.mc_code"
id="wechatmcc_input" required
ng-options="mc_code.value as mc_code.label for mc_code in wechatMccIndustries">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.wechatmcc.$error"
ng-if="partnerForm.wechatmcc.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group" ng-if="partner.enable_cross_payment"
ng-class="{'has-error':partnerForm.alipay_category.$invalid && partnerForm.alipay_category.$dirty}">
<label class="control-label col-sm-2"

@ -42,7 +42,7 @@
ng-class="{'has-error':subForm.merchant_storename.$invalid && subForm.merchant_storename.$dirty}">
<label class="control-label col-sm-3" for="merchant_storename_input">* Merchant Store Name</label>
<div class="col-sm-8">
<input class="form-control" ng-model="subMerchantInfo.store_name"
<input class="form-control" ng-model="subMerchantInfo.short_name"
type="text" name="merchant_storename" id="merchant_storename_input" required maxlength="50">
<div ng-messages="subForm.merchant_storename.$error" ng-if="subForm.merchant_storename.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
@ -71,6 +71,25 @@
</div>
<div class="form-group"
ng-class="{'has-error':subForm.business_type.$invalid && subForm.business_type.$dirty}">
<label class="control-label col-sm-3"
for="business_type_input">* Business Type</label>
<div class="col-sm-8">
<select class="form-control" name="business_type"
ng-model="subMerchantInfo.business_type"
id="business_type_input"
required
ng-options="businessType.value as businessType.label for businessType in businessTypesMap">
<option value="">Please Choose</option>
</select>
<div ng-messages="subForm.business_type.$error" ng-if="subForm.business_type.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
</div>
</div>
</div>
<div class="form-group"
ng-if="subMerchantInfo.business_type=='ONLINE'||subMerchantInfo.business_type=='BOTH'"
ng-class="{'has-error':subForm.company_website.$invalid && subForm.company_website.$dirty}">
<label class="control-label col-sm-3" for="website_input">* Website</label>
<div class="col-sm-8">
@ -81,6 +100,20 @@
</div>
</div>
</div>
<!-- store address 店铺地址 -->
<div class="form-group"
ng-if="subMerchantInfo.business_type=='OFFLINE'||subMerchantInfo.business_type=='BOTH'"
ng-class="{'has-error':subForm.address.$invalid && subForm.address.$dirty}">
<label class="control-label col-sm-3" for="address_input">* Store Address</label>
<div class="col-sm-8">
<input class="form-control" ng-model="subMerchantInfo.address"
type="text" name="address" id="address_input" required maxlength="128">
<div ng-messages="subForm.address.$error" ng-if="subForm.address.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>
</div>
</div>
</div>
<div class="alert alert-danger" ng-if="errmsg" ng-bind="errmsg"></div>
<div class="form-group"
ng-class="{'has-error':subForm.office_phone.$invalid && subForm.office_phone.$dirty}">
@ -167,8 +200,27 @@
</div>
</div>
<!-- 公司注册号 -->
<div class="form-group"
ng-class="{'has-error':subForm.merchant_type.$invalid && subForm.merchant_type.$dirty}">
<label class="control-label col-sm-3"
for="merchant_type_select">* Merchant Type</label>
<div class="col-sm-8">
<select class="form-control" ng-model="subMerchantInfo.merchant_type"
id="merchant_type_select"
name="merchant_type" >
<option value="">Please Choose</option>
<option value="ENTERPRISE" >ENTERPRISE</option>
<option value="INDIVIDUAL">INDIVIDUAL</option>
</select>
<div ng-messages="subForm.merchant_type.$error" ng-if="subForm.merchant_type.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
</div>
</div>
</div>
<!-- 公司注册号 -->
<div class="form-group" ng-if="subMerchantInfo.merchant_type == 'ENTERPRISE'"
ng-class="{'has-error':subForm.company_register_no.$invalid && subForm.company_register_no.$dirty}">
<label class="control-label col-sm-3" for="company_register_no_input">* Company registration document No</label>
<div class="col-sm-8">
@ -181,76 +233,81 @@
</div>
</div>
<!-- 公司注册日期 -->
<div class="form-group"
ng-class="{'has-error':subForm.company_register_date.$invalid && subForm.company_register_date.$dirty}">
<label class="control-label col-sm-3" for="company_register_date_input">* Company registration Date</label>
<!-- 注册证书过期时间 -->
<div class="form-group" ng-if="subMerchantInfo.merchant_type == 'ENTERPRISE'"
ng-class="{'has-error':subForm.certificat_expire_date.$invalid && subForm.certificat_expire_date.$dirty}">
<label class="control-label col-sm-3" for="certificat_expire_date_input">* Expiration Date of Registration Certificat</label>
<div class="col-sm-8">
<input class="form-control" ng-model="subMerchantInfo.company_register_date" required maxlength="50"
type="text" name="company_register_date" id="company_register_date_input">
<div ng-messages="subForm.company_register_date.$error" ng-if="subForm.company_register_date.$dirty">
<input class="form-control" id="certificat_expire_date_input"
ng-model="subMerchantInfo.certificat_expire_date"
uib-datepicker-popup size="10"
required
name="certificat_expire_date"
is-open="certificat_expire_date.open"
ng-click="certificat_expire_date.open=true"
>
<div ng-messages="subForm.certificat_expire_date.$error" ng-if="subForm.certificat_expire_date.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Length is more than 50</p>
</div>
</div>
</div>
<!-- director name 法人姓名 -->
<div class="form-group" ng-if="subMerchantInfo.merchant_type == '1'"
ng-class="{'has-error':subForm.representative_person.$invalid && subForm.representative_person.$dirty}">
<label class="control-label col-sm-3" for="representative_person_input">* Director Name</label>
<div class="col-sm-8">
<input class="form-control" ng-model="subMerchantInfo.representative_person" required maxlength="128"
type="text" name="representative_person" id="representative_person_input">
<div ng-messages="subForm.representative_person.$error" ng-if="subForm.representative_person.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>
</div>
</div>
</div>
<!--<div class="form-group" ng-if="subMerchantInfo.merchant_type == 'ENTERPRISE'"-->
<!--ng-class="{'has-error':subForm.director_name.$invalid && subForm.director_name.$dirty}">-->
<!--<label class="control-label col-sm-3" for="director_name_input">Director Name</label>-->
<!--<div class="col-sm-8">-->
<!--<input class="form-control" ng-model="subMerchantInfo.director_name" maxlength="128"-->
<!--type="text" name="director_name" id="director_name_input">-->
<!--<div ng-messages="subForm.director_name.$error" ng-if="subForm.director_name.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!-- director id number 法人身份证号-->
<div class="form-group" ng-if="subMerchantInfo.merchant_type == '1'"
ng-class="{'has-error':subForm.representative_person_id_number.$invalid && subForm.representative_person_id_number.$dirty}">
<label class="control-label col-sm-3" for="representative_person_id_number_input">* Director Id</label>
<div class="col-sm-8">
<input class="form-control" ng-model="subMerchantInfo.representative_person_id_number" required maxlength="128"
type="text" name="representative_person_id_number" id="representative_person_id_number_input">
<div ng-messages="subForm.representative_person_id_number.$error" ng-if="subForm.representative_person_id_number.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>
</div>
</div>
<!--&lt;!&ndash; director id number 法人身份证号&ndash;&gt;-->
<!--<div class="form-group" ng-if="subMerchantInfo.merchant_type == 'ENTERPRISE'"-->
<!--ng-class="{'has-error':subForm.director_id_number.$invalid && subForm.director_id_number.$dirty}">-->
<!--<label class="control-label col-sm-3" for="director_id_number_input">Director Id</label>-->
<!--<div class="col-sm-8">-->
<!--<input class="form-control" ng-model="subMerchantInfo.director_id_number" maxlength="128"-->
<!--type="text" name="director_id_number" id="director_id_number_input">-->
<!--<div ng-messages="subForm.director_id_number.$error" ng-if="subForm.director_id_number.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>-->
<!--</div>-->
<!--</div>-->
</div>
<!--</div>-->
<!-- principal name 负责人姓名 -->
<div class="form-group" ng-if="subMerchantInfo.merchant_type != '1'"
ng-class="{'has-error':subForm.marketing_person.$invalid && subForm.marketing_person.$dirty}">
<label class="control-label col-sm-3" for="marketing_person_input">* Principal Name</label>
<div class="col-sm-8">
<input class="form-control" ng-model="subMerchantInfo.marketing_person" required maxlength="128"
type="text" name="marketing_person" id="marketing_person_input">
<div ng-messages="subForm.marketing_person.$error" ng-if="subForm.marketing_person.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>
</div>
</div>
</div>
<!--&lt;!&ndash; principal name 负责人姓名 &ndash;&gt;-->
<!--<div class="form-group" ng-if="subMerchantInfo.merchant_type != 'ENTERPRISE'"-->
<!--ng-class="{'has-error':subForm.principal_name.$invalid && subForm.principal_name.$dirty}">-->
<!--<label class="control-label col-sm-3" for="principal_name_input">Principal Name</label>-->
<!--<div class="col-sm-8">-->
<!--<input class="form-control" ng-model="subMerchantInfo.principal_name" maxlength="128"-->
<!--type="text" name="principal_name" id="principal_name_input">-->
<!--<div ng-messages="subForm.principal_name.$error" ng-if="subForm.principal_name.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!-- principal id number 负责人身份证号 -->
<div class="form-group" ng-if="subMerchantInfo.merchant_type != '1'"
ng-class="{'has-error':subForm.marketing_person_id_number.$invalid && subForm.marketing_person_id_number.$dirty}">
<label class="control-label col-sm-3" for="marketing_person_id_number_input">* Marketing Person Id</label>
<div class="col-sm-8">
<input class="form-control" ng-model="subMerchantInfo.marketing_person_id_number" required maxlength="128"
type="text" name="marketing_person_id_number" id="marketing_person_id_number_input">
<div ng-messages="subForm.marketing_person_id_number.$error" ng-if="subForm.marketing_person_id_number.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>
</div>
</div>
</div>
<!--&lt;!&ndash; principal id number 负责人身份证号 &ndash;&gt;-->
<!--<div class="form-group" ng-if="subMerchantInfo.merchant_type != 'ENTERPRISE'"-->
<!--ng-class="{'has-error':subForm.principal_id_number.$invalid && subForm.principal_id_number.$dirty}">-->
<!--<label class="control-label col-sm-3" for="principal_id_number_input">Principal ID Number</label>-->
<!--<div class="col-sm-8">-->
<!--<input class="form-control" ng-model="subMerchantInfo.principal_id_number" maxlength="128"-->
<!--type="text" name="principal_id_number_number" id="principal_id_number_input">-->
<!--<div ng-messages="subForm.principal_id_number.$error" ng-if="subForm.principal_id_number.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--<p class="small text-danger" ng-message="maxlength">Length is more than 128</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
</div>
</div>
</div>

Loading…
Cancel
Save