Commit 839e2e84 authored by kevin's avatar kevin

Merge branch 'dev_mysql' of http://code.tech.tax.asia.pwcinternal.com/root/atms into dev_mysql

parents 66278509 13c71b3b
package pwc.taxtech.atms.constant.enums;
import java.util.HashMap;
import java.util.Map;
public enum EnumInvoiceType {
VATInvoice(1, "增值税专票"),
FreightTransport(2, "货运发票"),
......@@ -9,7 +12,8 @@ public enum EnumInvoiceType {
private int code;
private String name;
public static final Map<Integer, String> MAPPING = new HashMap<>();
public static final Map<String, Integer> NAME_MAPPING = new HashMap<>();
EnumInvoiceType(int code, String name) {
this.code = code;
this.name = name;
......@@ -22,4 +26,11 @@ public enum EnumInvoiceType {
public String getName() {
return name;
}
static {
for (EnumInvoiceType invoiceType : EnumInvoiceType.values()) {
MAPPING.put(invoiceType.getCode(), invoiceType.getName());
NAME_MAPPING.put(invoiceType.getName(), invoiceType.getCode());
}
}
}
......@@ -9,8 +9,8 @@ public class InvoiceRecordEnum {
* 发票类型
*/
public enum InvoiceType {
ORDINARY(1, "增值税普票"),
SPECIAL(2, "增值税专票");
ORDINARY(1, "增值税普通发票"),
SPECIAL(2, "增值税专用发票");
private Integer code;
private String name;
public static final Map<Integer, String> MAPPING = new HashMap<>();
......
package pwc.taxtech.atms.dto.vatdto;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import pwc.taxtech.atms.common.util.PwCIdSerialize;
import pwc.taxtech.atms.vat.entity.PeriodFormulaBlock;
public class FormulaFormlaBlockDto extends PeriodFormulaBlock {
@JsonSerialize(using = PwCIdSerialize.class)
private Long id;
@JsonSerialize(using = PwCIdSerialize.class)
private Long reportId;
@JsonSerialize(using = PwCIdSerialize.class)
private Long cellTemplateId;
@JsonSerialize(using = PwCIdSerialize.class)
private Long dataSourceId;
@Override
public Long getId() {
return id;
}
@Override
public void setId(Long id) {
this.id = id;
}
@Override
public Long getReportId() {
return reportId;
}
@Override
public void setReportId(Long reportId) {
this.reportId = reportId;
}
@Override
public Long getCellTemplateId() {
return cellTemplateId;
}
@Override
public void setCellTemplateId(Long cellTemplateId) {
this.cellTemplateId = cellTemplateId;
}
@Override
public Long getDataSourceId() {
return dataSourceId;
}
@Override
public void setDataSourceId(Long dataSourceId) {
this.dataSourceId = dataSourceId;
}
}
package pwc.taxtech.atms.dto.vatdto;
import pwc.taxtech.atms.vat.entity.PeriodFormulaBlock;
import java.util.List;
public class ReportDataDto {
private List<CellDataDto> cellData;
private List<PeriodFormulaBlock> formulaBlocks;
private List<FormulaFormlaBlockDto> formulaBlocks;
private List<DataSourceDtoExtend> manualDataSources;
private EbitDataDto ebitData;
......@@ -26,11 +24,11 @@ public class ReportDataDto {
this.cellData = cellData;
}
public List<PeriodFormulaBlock> getFormulaBlocks() {
public List<FormulaFormlaBlockDto> getFormulaBlocks() {
return this.formulaBlocks;
}
public void setFormulaBlocks(List<PeriodFormulaBlock> formulaBlocks) {
public void setFormulaBlocks(List<FormulaFormlaBlockDto> formulaBlocks) {
this.formulaBlocks = formulaBlocks;
}
......
......@@ -100,6 +100,15 @@ public class AssetListServiceImpl extends BaseService {
if(citAssetsListDto.getTaxAccountCompare() != 2){
criteria.andTaxAccountCompareEqualTo(citAssetsListDto.getTaxAccountCompare());
}
if(citAssetsListDto.getAssetGroupName() != null){
criteria.andAssetGroupNameLike(citAssetsListDto.getAssetGroupName()+"%");
}
if(citAssetsListDto.getDepreciationPeriod() != null){
criteria.andDepreciationPeriodEqualTo(citAssetsListDto.getDepreciationPeriod());
}
if(citAssetsListDto.getTaxGroupName() != null){
criteria.andTaxGroupNameLike(citAssetsListDto.getTaxGroupName()+"%");
}
Page page = PageHelper.startPage(citAssetsListDto.getPageInfo().getPageIndex(),citAssetsListDto.getPageInfo().getPageSize());
List<CitAssetsList> citAssetsLists = assetListMapper.selectByExample(assetListExample);
CitAssetSumDataDto sumData = assetListMapper.getSumData(citAssetsListDto.getProjectId());
......
......@@ -883,7 +883,8 @@ public class CitReportServiceImpl extends BaseService {
*/
List<PeriodFormulaBlock> formulaBlocks = periodFormulaBlockMapper.selectByExample(periodFormulaBlockExample);
dataDto.setFormulaBlocks(formulaBlocks);
dataDto.setFormulaBlocks(formulaBlocks.stream()
.map(o -> beanUtil.copyProperties(o, new FormulaFormlaBlockDto())).collect(Collectors.toList()));
//todo: 关键字数据源稍后再加
// 获取通过KeyValueDataId关联的数据源,即公式数据源
......
......@@ -116,11 +116,10 @@ public class ReportFileUploadService extends BaseService {
data.setCreator(user.getUserName());
data.setUid(CommonUtils.getUUID());
data.setCreateTime(new Date());
data.setReportFileName(file.getOriginalFilename());
if (StringUtils.isBlank(data.getFileUploadId())) {
FileUpload fileUpload = didiFileUploadService.uploadFile(file, file.getOriginalFilename(), FileUploadEnum.BizSource.REPORT_UPLOAD.name());
data.setFileUploadId(fileUpload.getUid());
if(StringUtils.isBlank(data.getReportFileName())){
data.setReportFileName(file.getOriginalFilename());
}
if (StringUtils.isBlank(data.getProjectId()) && StringUtils.isNotBlank(data.getOrgId()) && data.getPeriod() != null) {
ProjectExample projectExample = new ProjectExample();
String year = String.valueOf(data.getPeriod()).substring(0,4);
......@@ -131,7 +130,10 @@ public class ReportFileUploadService extends BaseService {
}else{
return;
}
if (StringUtils.isBlank(data.getFileUploadId())) {
FileUpload fileUpload = didiFileUploadService.uploadFile(file, file.getOriginalFilename(), FileUploadEnum.BizSource.REPORT_UPLOAD.name());
data.setFileUploadId(fileUpload.getUid());
}
}else {
Project project = projectMapper.selectByPrimaryKey(data.getProjectId());
data.setOrgId(project.getOrganizationId());
......@@ -143,7 +145,7 @@ public class ReportFileUploadService extends BaseService {
taxDocument.setEnable("T");
taxDocument.setOwnTime(data.getPeriod());
taxDocument.setFileType(data.getReportType());
taxDocument.setFileName(data.getReportFileName());
FileTypesExample example = new FileTypesExample();
example.createCriteria().andFileTypeEqualTo(data.getReportType());
List<FileTypes> dataList = fileTypesMapper.selectByExample(example);
......@@ -151,6 +153,15 @@ public class ReportFileUploadService extends BaseService {
taxDocument.setFileAttr(dataList.get(0).getFileAttr());
taxDocument.setFileTypeId(dataList.get(0).getId());
}
//重新命名
String fileName = taxDocument.getCompanyName()+"_"+taxDocument.getFileType()+"_"+taxDocument.getOwnTime();
fileName+=file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
if (StringUtils.isBlank(data.getFileUploadId())) {
FileUpload fileUpload = didiFileUploadService.uploadFile(file, fileName, FileUploadEnum.BizSource.REPORT_UPLOAD.name());
data.setFileUploadId(fileUpload.getUid());
data.setReportFileName(fileName);
}
taxDocument.setFileName(fileName);
taxDocumentService.addTaxDocumentList(file,taxDocument);
}
ReportFileUploadExample example = new ReportFileUploadExample();
......
......@@ -169,10 +169,15 @@ public class TaxDocumentServiceImpl {
try {
//上传文件
if(StringUtils.isBlank(taxDocument.getFileUploadId())){
FileUpload fileUpload = didiFileUploadService.uploadFile(file,file.getOriginalFilename(), FileUploadEnum.BizSource.RECORD_UPLOAD.name());
taxDocument.setFileUploadId(fileUpload.getUid());
taxDocument.setFilePositionUrl(fileUpload.getViewHttpUrl());
if(ReportFileUploadEnum.ReportType.MAPPING.containsKey(taxDocument.getFileType())){
//重新命名
String fileName = taxDocument.getCompanyName()+"_"+taxDocument.getFileType()+"_"+taxDocument.getOwnTime();
fileName+=file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
FileUpload fileUpload = didiFileUploadService.uploadFile(file,fileName, FileUploadEnum.BizSource.RECORD_UPLOAD.name());
taxDocument.setFileUploadId(fileUpload.getUid());
taxDocument.setFilePositionUrl(fileUpload.getViewHttpUrl());
taxDocument.setFileName(fileName);
ReportFileUpload reportFileUpload = new ReportFileUpload();
reportFileUpload.setOrgId(taxDocument.getCompanyId());
reportFileUpload.setSourceType(ReportFileUploadEnum.SuorceType.RECORD.name());
......@@ -180,7 +185,12 @@ public class TaxDocumentServiceImpl {
reportFileUpload.setPeriod(Integer.valueOf(period));
reportFileUpload.setFileUploadId(fileUpload.getUid());
reportFileUpload.setReportType(taxDocument.getFileType());
reportFileUpload.setReportFileName(fileName);
reportFileUploadService.saveData(file,reportFileUpload);
}else{
FileUpload fileUpload = didiFileUploadService.uploadFile(file,file.getOriginalFilename(), FileUploadEnum.BizSource.RECORD_UPLOAD.name());
taxDocument.setFileUploadId(fileUpload.getUid());
taxDocument.setFilePositionUrl(fileUpload.getViewHttpUrl());
}
}
//设置创建人 创建时间信息 设置年份区分
......
......@@ -1252,7 +1252,9 @@ public class ReportServiceImpl extends BaseService {
*/
List<PeriodFormulaBlock> formulaBlocks = periodFormulaBlockMapper.selectByExample(periodFormulaBlockExample);
dataDto.setFormulaBlocks(formulaBlocks);
dataDto.setFormulaBlocks(formulaBlocks.stream()
.map(o -> beanUtil.copyProperties(o, new FormulaFormlaBlockDto())).collect(Collectors.toList()));
//todo: 关键字数据源稍后再加
// 获取通过KeyValueDataId关联的数据源,即公式数据源
......
......@@ -6,6 +6,7 @@ import org.apache.poi.ss.formula.eval.ValueEval;
import org.apache.poi.ss.formula.functions.FreeRefFunction;
import pwc.taxtech.atms.common.util.SpringContextUtil;
import pwc.taxtech.atms.constant.Constant;
import pwc.taxtech.atms.constant.enums.EnumInvoiceType;
import pwc.taxtech.atms.constant.enums.EnumOperationType;
import pwc.taxtech.atms.constant.enums.FormulaDataSourceDetailType;
import pwc.taxtech.atms.constant.enums.KeyValueConfigResultType;
......@@ -53,7 +54,7 @@ public class JXFP extends FunctionBase implements FreeRefFunction {
int resultType = getIntParam(args[3], ec);
int period = getIntParam(args[4], ec);
// 客户情况只计算增值税专票
String invoiceType = "004";
// String invoiceType = "004";
String formulaExpression = "JXFP(" + certificationPeriod + "," + invoiceTypeParam + ","
+ authenticationType + "," + resultType + "," + period + ")";
......@@ -81,22 +82,22 @@ public class JXFP extends FunctionBase implements FreeRefFunction {
List<CertifiedInvoicesList> inputInvoices;
if (authenticationType == 1 && formulaContext.getIsYear()) {
inputInvoices = getInvoice(null, invoiceType,
inputInvoices = getInvoice(null, invoiceTypeParam,
Constant.InputInvoiceCertificationResult.CheckPass, Constant.InputInvoiceCertificationResult.ScanPass,
null);
} else if (authenticationType == 1) {
inputInvoices =getInvoice(period, invoiceType,
inputInvoices =getInvoice(period, invoiceTypeParam,
Constant.InputInvoiceCertificationResult.CheckPass, Constant.InputInvoiceCertificationResult.ScanPass,
null);
}
// 认证未通过与未认证暂认为是同一个意思
else if (authenticationType == 2 && formulaContext.getIsYear()) {
inputInvoices = getInvoice(null, invoiceType,
inputInvoices = getInvoice(null, invoiceTypeParam,
null, null, Constant.InputInvoiceCertificationResult.NotPass);
}
// 认证未通过与未认证暂认为是同一个意思
else if (authenticationType == 0 || authenticationType == 2) {
inputInvoices =getInvoice(period, invoiceType, null,
inputInvoices =getInvoice(period, invoiceTypeParam, null,
null, Constant.InputInvoiceCertificationResult.NotPass);
} else {
saveFormulaBlock(period, ec, formulaExpression, new BigDecimal("0.0"), 0L, formulaContext.getProjectId());
......@@ -141,7 +142,7 @@ public class JXFP extends FunctionBase implements FreeRefFunction {
inputInvoiceDataSourceDto.setCertificationDate(x.getCertifiedDate());
inputInvoiceDataSourceDto.setInvoiceCode(x.getInvoiceCode());
inputInvoiceDataSourceDto.setInvoiceNumber(x.getInvoiceNum());
inputInvoiceDataSourceDto.setInvoiceType(Integer.parseInt(x.getInvoiceType()));
inputInvoiceDataSourceDto.setInvoiceType(EnumInvoiceType.NAME_MAPPING.get(x.getInvoiceType()));
inputInvoiceDataSourceDto.setPeriod(period);
inputInvoiceDataSourceDto.setSellerTaxNumber(x.getSalesTaxNum());
inputInvoiceDataSourceDto.setName(Constant.DataSourceName.InputDetailInvoiceDataSource);
......@@ -194,20 +195,17 @@ public class JXFP extends FunctionBase implements FreeRefFunction {
return strtodate;
}
public List<CertifiedInvoicesList> getInvoice(Integer period, String invoiceType, String checkPass, String scanPass, String notPass) {
public List<CertifiedInvoicesList> getInvoice(Integer period, Integer invoiceType, String checkPass, String scanPass, String notPass) {
CertifiedInvoicesListExample example = new CertifiedInvoicesListExample();
CertifiedInvoicesListExample.Criteria criteria = example.createCriteria();
if (period != null) {
Calendar date = Calendar.getInstance();
String year = String.valueOf(date.get(Calendar.YEAR));
//认证期间
criteria.andPeriodEqualTo(Integer.valueOf(year + (period > 9 ? period.toString() : "0" + period.toString())));
criteria.andPeriodEqualTo(Integer.valueOf(formulaContext.getYear() + (period > 9 ? period.toString() : "0" + period.toString())));
}
if (invoiceType != null) {
//发票类型
criteria.andInvoiceTypeEqualTo(String.valueOf(invoiceType));
criteria.andInvoiceTypeEqualTo(EnumInvoiceType.MAPPING.get(invoiceType));
// criteria1.andFPLXEqualTo(String.valueOf(invoiceType));
}
......@@ -223,7 +221,7 @@ public class JXFP extends FunctionBase implements FreeRefFunction {
//// example.or(criteria1);
// }
//发票状态
criteria.andInvoiceTypeEqualTo("1"); // 过滤作废状态
criteria.andInvoiceStatusEqualTo("正常"); // 过滤作废状态
// List<InputInvoice> list = inputInvoiceMapper.selectByExample(example).stream().filter(x -> {
// return x.getRZSQ().endsWith("-" + (period.intValue() > 9 ? period.toString() : "0" + period.toString()));
......
......@@ -52,5 +52,6 @@
"DocumentPath":"DocumentPath",
"PreviewFile":"PreviewFile",
"UploadSuccessCount":"UploadSuccessCount",
"UploadFailCount":"UploadFailCount"
"UploadFailCount":"UploadFailCount",
"DeleteConfirm":"DeleteConfirm"
}
\ No newline at end of file
......@@ -52,5 +52,6 @@
"DocumentPath":"档案路径",
"PreviewFile":"预览文件",
"UploadSuccessCount":"个档案上传成功",
"UploadFailCount":"个档案上传失败"
"UploadFailCount":"个档案上传失败",
"DeleteConfirm":"是否确认删除记录?"
}
\ No newline at end of file
......@@ -1457,6 +1457,7 @@
"SelectCheck": "请至少选择一项",
"SelectColumnError": "列名对应错误",
"SelectExportReport": "选择导出报表",
"SelectUploadReport": "选择保存版本",
"SelectFile": "选择文件...",
"SelectFileTitle": "选择文件",
"SelectFileToUpload": "上传文件...",
......
......@@ -3,12 +3,12 @@
<div>
<table class=" table table-responsive">
<tr>
<td><span translate="TaxAccountDifference"></span></td>
<td style="vertical-align: middle"><span translate="TaxAccountDifference"></span></td>
<td>
<!--税会差异的选择-->
<div class="input-group">
<div class="input-group" style="width: 100%">
<div class="option">
<div id="taxAccountDifferenceButton" dx-select-box="taxAccountDifferenceOptions"></div>
<div id="taxAccountDifferenceButton" dx-select-box="taxAccountDifferenceOptions" style="width: 100%"></div>
</div>
</div>
</td>
......@@ -16,22 +16,20 @@
<tr>
<td><span translate="AssetGroupName"></span></td>
<td><input class="form-control " type="text" id="assetGroupName" placeholder=""
ng-model="filterData.assetGroupName"></td>
ng-model="citAssetsListDto.assetGroupName"></td>
</tr>
<tr>
<td><span translate="DepreciationPeriod"></span></td>
<td>
<div class="input-group">
<input class="form-control " type="text" id="depreciationPeriod" placeholder=""
ng-model="filterData.depreciationPeriod">
</div>
ng-model="citAssetsListDto.depreciationPeriod">
</td>
</tr>
<tr>
<td><span translate="TaxGroupType"></span></td>
<td><input class="form-control " type="text" id="taxGroupType" placeholder=""
ng-model="filterData.taxGroupType"></td>
ng-model="citAssetsListDto.taxGroupType"></td>
</tr>
</table>
......
......@@ -57,7 +57,10 @@
},
assetType : 1,
projectId : projectId,
taxAccountCompare : 2
taxAccountCompare : 2,
assetGroupName:'',
depreciationPeriod:'',
taxGroupType:''
};
$scope.refreshAssetResultListGrid = function () {
debugger;
......@@ -976,6 +979,31 @@
});
};
var initParamFilter = function(){
$scope.citAssetsListDto.taxAccountCompare =2;
$scope.citAssetsListDto.assetGroupName =2;
$scope.citAssetsListDto.depreciationPeriod =2;
$scope.citAssetsListDto.taxGroupType =2;
};
var doDataFilter = function () {
debugger;
// initParamFilter();
getAssetResultList($scope.citAssetsListDto.assetType);
}
var doDataFilterReset = function () {
debugger;
// initParamFilter();
$scope.citAssetsListDto.taxAccountCompare =2;
$scope.citAssetsListDto.assetGroupName = null;
$scope.citAssetsListDto.depreciationPeriod = null;
$scope.citAssetsListDto.taxGroupType = null;
getAssetResultList($scope.citAssetsListDto.assetType);
};
//开始
(function initialize() {
//分页的设置
......@@ -994,6 +1022,8 @@
$scope.incomeInvoiceTotalColumns = [];
$scope.initIncomeInvoiceTotalColumnsIndex = [];
$scope.changeSheet = changeSheet;
$scope.doDataFilter = doDataFilter;
$scope.doDataFilterReset = doDataFilterReset;
debugger;
function init(){
......
......@@ -412,12 +412,12 @@
}
.popover {
min-width: 370px;
min-width: 370px;
.arrow {
left: 0px;
}
}
.arrow {
left: 0px !important;
}
}
.popover-content {
td {
......
......@@ -910,6 +910,12 @@
//打开导出文件弹出框
$scope.openExportPop = function (evenType) {
$scope.evenType = evenType;
if ('export' == $scope.evenType) {
$scope.viewTitle = $translate.instant('SelectExportReport');
}
if ('upload' == $scope.evenType) {
$scope.viewTitle = $translate.instant('SelectUploadReport');
}
var grp = _.find($scope.$parent.$parent.groups, function (g) {
return g.name == 'TaxReturnType';
});
......
......@@ -76,7 +76,7 @@
<div id="exportReportFilesContainer">
<script type="text/ng-template" class="content" id="exportReport.html">
<div class="modal-header">
<h4 class="modal-title" style="float: left;width: 70%;">{{'SelectExportReport' | translate}}</h4>
<h4 class="modal-title" style="float: left;width: 70%;">{{viewTitle}}</h4>
<span ng-click="$dismiss();" style="width: 20px; float: right; cursor: pointer;">x</span>
</div>
<div class="modal-body process-bar-container">
......
......@@ -656,7 +656,7 @@ constant.citPermission = {
queryCode: '03.003.001.001',
importCode: '03.003.001.002'
},
caculateDataCode: '03.003.002',
caculateDataCode: '03.003.004',
},
reportView: {
reportViewCode: '03.004',
......
......@@ -9,7 +9,13 @@ taxDocumentManageModule.controller('taxDocumentListController',
$scope.queryFieldModel = {};
$scope.editFieldModel = {};
$scope.pagingOptions = {};
//分页的设置
$scope.pagingOptions = {
pageIndex: 1, //当前页码
totalItems: 0, //总数据
pageSize: 10, //每页多少条数据
pageSizeString: '10',
};
$scope.localData = null;
$scope.loadMainData = function () {
......@@ -414,11 +420,11 @@ taxDocumentManageModule.controller('taxDocumentListController',
if(params[key] === undefined || params[key] === null) params[key] = "";
});
params.ownTime = $scope.queryOwnTime(params.ownTime, "int");
params.effectiveTime = $scope.getQueryDate(params.effectiveTime, "/");
params.fileTime = $scope.getQueryDate(params.fileTime, "/");
params.createTime = $scope.getQueryDate(params.createTime, "/");
params.updateTime = $scope.getQueryDate(params.updateTime, "/");
params.uploadTime = $scope.getQueryDate(params.uploadTime, "/");
params.effectiveTime ? params.effectiveTime = $scope.getQueryDate(params.effectiveTime, "/") : delete params.effectiveTime;
params.fileTime ? params.fileTime = $scope.getQueryDate(params.fileTime, "/") : delete params.fileTime;
params.createTime ? params.createTime = $scope.getQueryDate(params.createTime, "/") : delete params.createTime;
params.updateTime ? params.updateTime = $scope.getQueryDate(params.updateTime, "/") : delete params.updateTime;
params.uploadTime ? params.uploadTime = $scope.getQueryDate(params.uploadTime, "/") : delete params.uploadTime;
params.filePositionUrl = encodeURIComponent(params.filePositionUrl);
params.auditStatus = $scope.transformAuditStatusToServer(params.auditStatus);
taxDocumentListService.editRecord(params).then(function (data) {
......@@ -474,21 +480,39 @@ taxDocumentManageModule.controller('taxDocumentListController',
delIDs.push(cellId);
}
});
taxDocumentListService.delFileRecordItems({
"ids":delIDs
}).then(function (data) {
if (data) {
SweetAlert.swal({
title: $translate.instant("Deleted"),
type: "success",
confirmButtonText: $translate.instant('Confirm'),
closeOnConfirm: true
},
function (isConfirm) {
if (isConfirm) $scope.loadMainData();
if(delIDs.length ==0){
return;
}
SweetAlert.swal({
title: '提示',
text: $translate.instant("DeleteConfirm"),
type: "warning",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: $translate.instant('Confirm'),
cancelButtonText: $translate.instant('Cancel'),
closeOnConfirm: true,
closeOnCancel: true
},
function (isConfirm) {
if (isConfirm) {
taxDocumentListService.delFileRecordItems({
"ids":delIDs
}).then(function (data) {
if (data) {
SweetAlert.swal({
title: $translate.instant("Deleted"),
type: "success",
confirmButtonText: $translate.instant('Confirm'),
closeOnConfirm: true
},
function (isConfirm) {
if (isConfirm) $scope.loadMainData();
});
}
});
}
});
}
})
};
(function initialize() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment