Commit 3e211e40 authored by fangxinjiang's avatar fangxinjiang

Merge remote-tracking branch 'origin/MVP1.5.4' into MVP1.5.4

parents 6d50cec0 6bc49bd2
......@@ -145,6 +145,14 @@ public class ArchivesConstants {
* 处理状态
*/
public static final String HANDLE_FLAG_TWO= "已处理-未处理";
/**
* 处理状态
*/
public static final String HANDLE_FLAG_THREE= "未处理-未处理";
/**
* 处理状态
*/
public static final String HANDLE_FLAG_FOUR= "已处理-已处理";
public static final int MYEAR_MONTH=-717;
......
......@@ -48,8 +48,8 @@ public class TEmployeeRetirement extends BaseEntity implements Serializable {
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("身份证号码")
@ExcelAttribute(name = "身份证号")
@Schema(description = "身份证号")
@ExcelAttribute(name = "身份证号")
@Schema(description = "身份证号")
private String empIdcard;
/**
......@@ -173,9 +173,9 @@ public class TEmployeeRetirement extends BaseEntity implements Serializable {
* 项目编码
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("客户编码")
@ExcelAttribute(name = "客户编码")
@Schema(description = "客户编码")
@ExcelProperty("项目编码")
@ExcelAttribute(name = "项目编码")
@Schema(description = "项目编码")
private String deptNo;
/**
......
......@@ -44,9 +44,9 @@ public class TEmployeeRetirementExportVo{
* 身份证号码
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("身份证号")
@ExcelAttribute(name = "身份证号")
@Schema(description = "身份证号")
@ExcelProperty("身份证号")
@ExcelAttribute(name = "身份证号")
@Schema(description = "身份证号")
private String empIdcard;
/**
......@@ -71,9 +71,9 @@ public class TEmployeeRetirementExportVo{
* 年龄
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("年龄")
@ExcelAttribute(name = "年龄")
@Schema(description = "年龄")
@ExcelProperty("年龄(岁)")
@ExcelAttribute(name = "年龄(岁)")
@Schema(description = "年龄(岁)")
private Integer empAge;
/**
......@@ -87,15 +87,15 @@ public class TEmployeeRetirementExportVo{
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("档案")
@ExcelAttribute(name = "档案")
@Schema(description = "档案")
@ExcelProperty("档案所在地")
@ExcelAttribute(name = "档案所在地")
@Schema(description = "档案所在地")
private String fileAddress;
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("社保")
@ExcelAttribute(name = "社保")
@Schema(description = "社保")
@ExcelProperty("社保所在地")
@ExcelAttribute(name = "社保所在地")
@Schema(description = "社保所在地")
private String socialAddress;
......@@ -137,14 +137,7 @@ public class TEmployeeRetirementExportVo{
@Schema(description = "社保-县")
private Integer socialTown;
/**
* 项目名称
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("项目名称")
@ExcelAttribute(name = "项目名称")
@Schema(description = "项目名称")
private String deptName;
/**
* 客户名称
......@@ -164,13 +157,21 @@ public class TEmployeeRetirementExportVo{
@Schema(description = "客户编码")
private String unitNo;
/**
* 项目名称
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("项目名称")
@ExcelAttribute(name = "项目名称")
@Schema(description = "项目名称")
private String deptName;
/**
* 项目编码
*/
@HeadFontStyle(fontHeightInPoints = 11)
@ExcelProperty("客户编码")
@ExcelAttribute(name = "客户编码")
@Schema(description = "客户编码")
@ExcelProperty("项目编码")
@ExcelAttribute(name = "项目编码")
@Schema(description = "项目编码")
private String deptNo;
/**
......
......@@ -57,7 +57,7 @@ private TEmployeeRetirementFlagDetailMapper tEmployeeRetirementFlagDetailMapper;
@Override
@Scheduled(cron = "0 */1 * * * ?")
public void retireeRemind() {
Date date = new Date();
Date date = DateUtil.getCurrentDateTime();
YifuUser user = SecurityUtils.getUser();
SimpleDateFormat formatterMenYear = new SimpleDateFormat("YYYYMM");
String YearMonth = formatterMenYear.format(date);
......@@ -66,14 +66,8 @@ private TEmployeeRetirementFlagDetailMapper tEmployeeRetirementFlagDetailMapper;
String mRemainTime = DateUtil.getYearAndMonth(YearMonth, ArchivesConstants.MYEAR_MONTH);
String wRemainTime = DateUtil.getYearAndMonth(YearMonth, ArchivesConstants.WYEAR_MONTH);
String TT = mRemainTime + dateOne;
StringBuffer stringBuffer = new StringBuffer(TT);
stringBuffer.insert(CommonConstants.FOUR_INT, "-");
stringBuffer.insert(CommonConstants.SEVEN_INT, "-");
String LL = wRemainTime + dateOne;
StringBuffer stringBufferOne = new StringBuffer(LL);
stringBufferOne.insert(CommonConstants.FOUR_INT, "-");
stringBufferOne.insert(CommonConstants.SEVEN_INT, "-");
List<TEmployeeRetirement> list = baseMapper.getBirthday(TT,LL);
List<TEmployeeRetirement> list = baseMapper.getBirthday(DateUtil.dateToString(DateUtil.stringToDate(TT),DateUtil.ISO_EXPANDED_DATE_FORMAT),DateUtil.dateToString(DateUtil.stringToDate(LL),DateUtil.ISO_EXPANDED_DATE_FORMAT));
for (TEmployeeRetirement tEmployeeRetirement : list) {
int i = baseMapper.selectByEmpIdcard(tEmployeeRetirement.getEmpIdcard());
if (i == 0) {
......@@ -82,7 +76,6 @@ private TEmployeeRetirementFlagDetailMapper tEmployeeRetirementFlagDetailMapper;
tEmployeeRetirementMapper.insert(tEmployeeRetirement);
}
}
}
@Override
......@@ -93,7 +86,14 @@ private TEmployeeRetirementFlagDetailMapper tEmployeeRetirementFlagDetailMapper;
if (changeHandleFlagAllVo.getHandleFlag() == 0) {
tEmployeeRetirementFlagDetail.setDatailId(changeHandleFlagAllVo.getIds()[i]);
tEmployeeRetirementFlagDetail.setContext(ArchivesConstants.HANDLE_FLAG_ONE);
TEmployeeRetirement tEmployeeRetirement=tEmployeeRetirementMapper.selectById(changeHandleFlagAllVo.getIds()[i]);
if(tEmployeeRetirement.getHandleFlag()==0){
tEmployeeRetirementFlagDetail.setContext(ArchivesConstants.HANDLE_FLAG_THREE);
}
else {
tEmployeeRetirementFlagDetail.setContext(ArchivesConstants.HANDLE_FLAG_TWO);
}
tEmployeeRetirementFlagDetail.setCreateBy(user.getId());
tEmployeeRetirementFlagDetail.setCreateName(user.getNickname());
tEmployeeRetirementFlagDetail.setCreateTime(DateTime.now());
......@@ -103,7 +103,15 @@ private TEmployeeRetirementFlagDetailMapper tEmployeeRetirementFlagDetailMapper;
if (changeHandleFlagAllVo.getHandleFlag() == 1) {
tEmployeeRetirementFlagDetail.setDatailId(changeHandleFlagAllVo.getIds()[i]);
tEmployeeRetirementFlagDetail.setContext(ArchivesConstants.HANDLE_FLAG_TWO);
TEmployeeRetirement tEmployeeRetirement=tEmployeeRetirementMapper.selectById(changeHandleFlagAllVo.getIds()[i]);
if(tEmployeeRetirement.getHandleFlag()==1){
tEmployeeRetirementFlagDetail.setContext(ArchivesConstants.HANDLE_FLAG_FOUR);
}
else {
tEmployeeRetirementFlagDetail.setContext(ArchivesConstants.HANDLE_FLAG_ONE);
}
tEmployeeRetirementFlagDetail.setCreateBy(user.getId());
tEmployeeRetirementFlagDetail.setCreateName(user.getNickname());
tEmployeeRetirementFlagDetail.setCreateTime(DateTime.now());
......@@ -122,7 +130,7 @@ private TEmployeeRetirementFlagDetailMapper tEmployeeRetirementFlagDetailMapper;
TEmployeeRetirementFlagDetail tEmployeeRetirementFlagDetail = new TEmployeeRetirementFlagDetail();
if(changeHandleFlagVo.getHandleFlag()==0){
tEmployeeRetirementFlagDetail.setDatailId(changeHandleFlagVo.getId());
tEmployeeRetirementFlagDetail.setContext(ArchivesConstants.HANDLE_FLAG_ONE);
tEmployeeRetirementFlagDetail.setContext(ArchivesConstants.HANDLE_FLAG_TWO);
tEmployeeRetirementFlagDetail.setCreateBy(user.getId());
tEmployeeRetirementFlagDetail.setCreateTime(DateTime.now());
tEmployeeRetirementFlagDetail.setCreateName(user.getNickname());
......@@ -130,7 +138,7 @@ private TEmployeeRetirementFlagDetailMapper tEmployeeRetirementFlagDetailMapper;
}
if(changeHandleFlagVo.getHandleFlag()==1){
tEmployeeRetirementFlagDetail.setDatailId(changeHandleFlagVo.getId());
tEmployeeRetirementFlagDetail.setContext(ArchivesConstants.HANDLE_FLAG_TWO);
tEmployeeRetirementFlagDetail.setContext(ArchivesConstants.HANDLE_FLAG_ONE);
tEmployeeRetirementFlagDetail.setCreateBy(user.getId());
tEmployeeRetirementFlagDetail.setCreateTime(DateTime.now());
tEmployeeRetirementFlagDetail.setCreateName(user.getNickname());
......@@ -170,7 +178,7 @@ private TEmployeeRetirementFlagDetailMapper tEmployeeRetirementFlagDetailMapper;
String fileProvince = baseMapper.selectByIdd(tEmployeeRetirementExportVo.getFileProvince());
String fileCity = baseMapper.selectByIdd(tEmployeeRetirementExportVo.getFileCity());
String fileTown = baseMapper.selectByIdd(tEmployeeRetirementExportVo.getFileTown());
if (null != fileProvince && null != fileCity && null != fileTown) {
if (null != fileProvince && null != fileCity) {
if (null != fileCity && null == fileTown) {
tEmployeeRetirementExportVo.setFileAddress(fileProvince + "/" + fileCity);
} else {
......@@ -180,7 +188,7 @@ private TEmployeeRetirementFlagDetailMapper tEmployeeRetirementFlagDetailMapper;
String socialProvince = baseMapper.selectByIdd(tEmployeeRetirementExportVo.getSocialProvince());
String socialCity = baseMapper.selectByIdd(tEmployeeRetirementExportVo.getSocialCity());
String socailTown = baseMapper.selectByIdd(tEmployeeRetirementExportVo.getSocialTown());
if (null != socialProvince && null != socialCity && null != socailTown) {
if (null != socialProvince && null != socialCity ) {
if (null != socialCity && null == socailTown) {
tEmployeeRetirementExportVo.setSocialAddress(socialProvince + "/" + socialCity);
} else {
......
......@@ -25,5 +25,6 @@
SELECT a.ID,a.DATAIL_ID,a.CREATE_NAME,a.CREATE_BY,a.CREATE_TIME,a.CONTEXT
FROM t_employee_retirement_flag_detail a
where a.DATAIL_ID=#{id}
ORDER BY a.CREATE_TIME DESC
</select>
</mapper>
......@@ -18,9 +18,9 @@
<result property="socialProvince" column="SOCIAL_PROVINCE" jdbcType="INTEGER"/>
<result property="socialCity" column="SOCIAL_CITY" jdbcType="INTEGER"/>
<result property="socialTown" column="SOCIAL_TOWN" jdbcType="INTEGER"/>
<result property="deptName" column="DEPT_NAME" jdbcType="VARCHAR"/>
<result property="unitName" column="UNIT_NAME" jdbcType="VARCHAR"/>
<result property="unitNo" column="UNIT_NO" jdbcType="VARCHAR"/>
<result property="deptName" column="DEPT_NAME" jdbcType="VARCHAR"/>
<result property="deptNo" column="DEPT_NO" jdbcType="VARCHAR"/>
<result property="handleFlag" column="HANDLE_FLAG" jdbcType="INTEGER"/>
<result property="createBy" column="CREATE_BY" jdbcType="VARCHAR"/>
......@@ -35,8 +35,8 @@
EMP_PHONE,EMP_SEX,EMP_AGE,
EMP_NATRUE,FILE_PROVINCE,FILE_CITY,
FILE_TOWN,SOCIAL_PROVINCE,SOCIAL_CITY,
SOCIAL_TOWN,DEPT_NAME,UNIT_NAME,
UNIT_NO,DEPT_NO,HANDLE_FLAG,
SOCIAL_TOWN,UNIT_NAME,
UNIT_NO,DEPT_NAME,DEPT_NO,HANDLE_FLAG,
CREATE_BY,CREATE_NAME,CREATE_TIME,
UPDATE_BY,UPDATE_TIME
</sql>
......@@ -184,13 +184,9 @@
b.EMP_BIRTHDAY
FROM t_employee_project a
LEFT JOIN t_employee_info b ON a.EMP_IDCARD = b.EMP_IDCARD
where datediff(#{TT}, b.EMP_BIRTHDAY) = 0
and
b.EMP_SEX = '1'
and b.FILE_STATUS = 0
or datediff(#{LL}, b.EMP_BIRTHDAY) = 0
and b.EMP_SEX = '2'
and b.FILE_STATUS = 0
where ((datediff(#{TT}, b.EMP_BIRTHDAY) = 0 and b.EMP_SEX = '1')
or (datediff(#{LL}, b.EMP_BIRTHDAY) = 0 and b.EMP_SEX = '2'))
and b.FILE_STATUS = 0 and a.EMP_NATRUE in ('0','1','3')
GROUP BY a.EMP_ID
</select>
......
......@@ -279,7 +279,7 @@
and a.DEPART_NAME like concat("%",#{departName},"%")
</if>
<if test="nameOrNo != null and nameOrNo.trim() != ''">
and a.DEPART_NAME like concat("%",#{nameOrNo},"%") or a.DEPART_NO like concat("%",#{nameOrNo},"%")
and (a.DEPART_NAME like concat("%",#{nameOrNo},"%") or a.DEPART_NO like concat("%",#{nameOrNo},"%"))
</if>
<if test="customerId != null and customerId.trim() != ''">
and a.CUSTOMER_ID =#{customerId}
......
......@@ -117,7 +117,7 @@ public class TSalaryAccountExportVo {
@ExcelProperty("支出结算状态")
private String paySettleFlag;
@ExcelProperty("HRO状态")
@ExcelProperty("薪酬状态")
private String status;
}
......@@ -171,10 +171,12 @@ public class TMinSalaryServiceImpl extends ServiceImpl<TMinSalaryMapper, TMinSal
data.setErrorFlag(true);
errorMessage.append("所在地、最低工资(元)、状态为空;");
}
if (data.getLocation().contains("-")) {
data.setErrorFlag(true);
errorMessage.append("所在地格式与列表保持一致;");
} else {
if(null!=data.getLocation()) {
if (data.getLocation().contains("-")) {
data.setErrorFlag(true);
errorMessage.append("所在地格式与列表保持一致;");
}
}else {
if (null != data.getLocation()) {
String location[] = data.getLocation().split("/");
if (!data.getLocation().isEmpty()) {
......@@ -223,10 +225,6 @@ public class TMinSalaryServiceImpl extends ServiceImpl<TMinSalaryMapper, TMinSal
}
if (location.length > 2) {
String redisProvinceName = getRedisAreaValue(location[CommonConstants.ZERO_INT]);
if (Common.isEmpty(redisProvinceName)) {
data.setErrorFlag(true);
errorMessage.append("对应区域不存在;");
}
String redisCityName = getRedisAreaValue(location[CommonConstants.ONE_INT] + "_" + location[CommonConstants.ZERO_INT]);
if (Common.isEmpty(redisCityName)) {
data.setErrorFlag(true);
......@@ -266,20 +264,19 @@ public class TMinSalaryServiceImpl extends ServiceImpl<TMinSalaryMapper, TMinSal
}
}
}
if (null != data.getSalaryBase()) {
if (!ValidityUtil.validateStandard(data.getSalaryBase())) {
data.setErrorFlag(true);
errorMessage.append("最低工资,请填写>0的两位小数;");
}
}
if (null != data.getStatus()) {
if (!(CommonConstants.START.equals(data.getStatus()) || CommonConstants.STOP.equals(data.getStatus()))) {
data.setErrorFlag(true);
errorMessage.append("填写的状态不是启用或停用");
}
}
}
if (null != data.getSalaryBase()) {
if (!ValidityUtil.validateStandard(data.getSalaryBase())) {
data.setErrorFlag(true);
errorMessage.append("最低工资,请填写>0的两位小数;");
}
}
if (null != data.getStatus()) {
if (!(CommonConstants.START.equals(data.getStatus()) || CommonConstants.STOP.equals(data.getStatus()))) {
data.setErrorFlag(true);
errorMessage.append("填写的状态不是启用或停用");
}
}
if(data.isErrorFlag())
......@@ -304,7 +301,6 @@ public class TMinSalaryServiceImpl extends ServiceImpl<TMinSalaryMapper, TMinSal
TMinSalary selectOne = new TMinSalary();
selectOne.setId(e.getId());
if (null != e.getLocation()) {
if (e.getLocation().contains("/")) {
String location[] = e.getLocation().split("/");
if (location.length >1) {
for (int i = 0; i < location.length; i++) {
......@@ -322,37 +318,29 @@ public class TMinSalaryServiceImpl extends ServiceImpl<TMinSalaryMapper, TMinSal
}
}
}
}
if (e.getLocation().contains("-")) {
String location[] = e.getLocation().split("-");
if (location.length > 1) {
for (int i = 0; i < location.length; i++) {
if (i == CommonConstants.ZERO_INT) {
int province = baseMapper.selectByAreaName(location[i]);
selectOne.setProvince(province);
}
if (i == CommonConstants.ONE_INT) {
int city = baseMapper.selectByAreaName(location[i]);
selectOne.setCity(city);
}
if (i == CommonConstants.TWO_INT) {
int town = baseMapper.selectByAreaName(location[i]);
selectOne.setTown(town);
}
if(null==e.getLocation()){
TMinSalary tMinSalary=baseMapper.selectById(e.getId());
selectOne.setProvince(tMinSalary.getProvince());
selectOne.setCity(tMinSalary.getCity());
selectOne.setTown(tMinSalary.getTown());
}
}
}
}
}
if (CommonConstants.START.equals(e.getStatus())) {
selectOne.setStatus(CommonConstants.ONE_INT);
if(null!=e.getStatus()) {
if (CommonConstants.START.equals(e.getStatus())) {
selectOne.setStatus(CommonConstants.ONE_INT);
}
if (CommonConstants.STOP.equals(e.getStatus())) {
selectOne.setStatus(CommonConstants.TWO_INT);
}
}
if (CommonConstants.STOP.equals(e.getStatus())) {
selectOne.setStatus(CommonConstants.TWO_INT);
if(null!=e.getSalaryBase()) {
selectOne.setSalaryBase(e.getSalaryBase());
}
selectOne.setSalaryBase(e.getSalaryBase());
selectOne.setUpdateTime(LocalDateTime.now());
baseMapper.updateById(selectOne);
}
);
}
......
......@@ -495,10 +495,10 @@ public class SalaryAccountUtil implements Serializable {
, entity, salaryType, dept, user, entity.getSalaryStyle()
, CommonConstants.ZERO_STRING.equals(entity.getSalaryGiveTime()), invoiceTitle
, entity.getSaiList(), bankMap)) {
isContinue = false;
continue;
}
newEmps.setSalaryGiveTime(entity.getSalaryGiveTime());
log.error(newEmps.getEmpName());
saveNewEmpList.add(newEmps);
checkTaxMonthList.add(newEmps.getEmpIdcard());
} else {
......@@ -509,6 +509,7 @@ public class SalaryAccountUtil implements Serializable {
error = "第" + (newEmps.getLineNums() + 2) + "行:薪酬人员查询菜单无此员工,请添加<是否新员工(默认否)>列,并录入身份证号、开户行总行、开户行省、开户行市、银行卡号、计税月份、手机号码!";
errorList.add(new ErrorMessage(newEmps.getLineNums() + 2, error));
}
isContinue = false;
}
} else {
// 使用emp信息
......@@ -981,14 +982,9 @@ public class SalaryAccountUtil implements Serializable {
}
areaStr = ExcelUtil.getRedisAreaValue(CacheConstants.AREA_VALUE + entity.getBankCity().trim()
+ CommonConstants.DOWN_LINE_STRING + entity.getBankProvince().trim());
log.error("entity.getBankCity():"+entity.getBankCity());
log.error("entity.getBankProvince():"+entity.getBankProvince());
log.error("areaStr:"+areaStr);
if (Common.isNotNull(areaStr)) {
newEmp.setBankCity(areaStr);
log.error("1:areaStr:"+areaStr);
} else {
log.error("2:开户行市错误:"+areaStr);
error = "第" + (i + 2) + "行:" + newEmpStr + "-开户行市错误:" + entity.getBankCity();
errorList.add(new ErrorMessage((i + 2), error));
return false;
......@@ -1245,7 +1241,7 @@ public class SalaryAccountUtil implements Serializable {
method = Class.forName(clazz.getClass().getName()).getDeclaredMethod("get" + methodName);
return method.invoke(clazz);
} catch (Exception e) {
log.error("执行某个Field的getField方法异常!", e);
log.error("执行某个Field的getField方法异常!!", e);
return "";
}
}
......
......@@ -47,7 +47,7 @@
</if>
</if>
</if>
<if test="tMinSalary.town != null and tMinSalary.town.trim() != ''">
<if test="tMinSalary.town != null">
AND TOWN = '${tMinSalary.town}'
</if>
</if>
......
......@@ -843,7 +843,7 @@
GROUP_CONCAT(pdeduction.CN_NAME,':',pdeduction.SALARY_MONEY SEPARATOR ';') pdeductionDetail,
sum(ifnull(pdeduction.SALARY_MONEY,0)) pdeductionMoney,
if(a.PAY_SETTLE_FLAG = '0','已结算',if(a.PAY_SETTLE_FLAG = '1','结算中',if(a.PAY_SETTLE_FLAG = '2','未结算','-'))) paySettleFlag,
case s.STATUS when 0 then '待提交' when 1 then '待审核' when 2 then '待推送明细' when 3 then '已推送待发放' when 4 then '已发放' when 5 then '审核不通过' when 7 then '财务退回' when 10 then '推送失败' when 11 then '已审核生成收入中' when 12 then '已审核生成收入失败' else '-' end as status
case s.STATUS when 0 then '待提交' when 1 then '待审核' when 2 then '待推送明细' when 3 then '已推送待发放' when 4 then '已发放' when 5 then '审核不通过' when 6 then '确认不通过' when 7 then '财务退回' when 10 then '推送失败' when 11 then '已审核生成收入中' when 12 then '已审核生成收入失败' else '-' end as status
from
t_salary_account a
left join t_salary_standard s on a.SALARY_FORM_ID = s.id
......
......@@ -13,4 +13,5 @@ public class PaymentConstants {
public static final String MEDICAL = "医疗";
public static final String EXPORT = "缴费库合并导出";
public static final String SEARCH_EXPORT = "缴费库查询合并导出";
public static final String PAYMENT_SEARCH_EXPORT = "实缴查询批量导出";
}
......@@ -298,7 +298,7 @@ public class TPaymentInfoServiceImpl extends ServiceImpl<TPaymentInfoMapper, TPa
*/
@Override
public void sumSearchExport(HttpServletResponse response, TPaymentInfoSearchVo searchVo) {
String fileName = PaymentConstants.SEARCH_EXPORT + DateUtil.getThisTime() + CommonConstants.XLSX;
String fileName = PaymentConstants.PAYMENT_SEARCH_EXPORT + DateUtil.getThisTime() + CommonConstants.XLSX;
//获取要导出的列表
List<TPaymentInfoNewExportVo> list = new ArrayList<>();
Integer count = baseMapper.selectCountPaymentSearchInfo(searchVo);
......
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