Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
warehouse
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
胡懿
warehouse
Commits
a9948db2
Commit
a9948db2
authored
Jul 19, 2023
by
胡懿
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改出库报错的问题,升级poi,
parent
df05c88c
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
116 additions
and
73 deletions
+116
-73
ExcelExportInfo.java
...jeeplus/modules/warehouse/ledger/dto/ExcelExportInfo.java
+5
-5
Ledger.java
...a/com/jeeplus/modules/warehouse/ledger/entity/Ledger.java
+1
-13
LedgerMapper.java
...jeeplus/modules/warehouse/ledger/mapper/LedgerMapper.java
+2
-1
LedgerMapper.xml
...plus/modules/warehouse/ledger/mapper/xml/LedgerMapper.xml
+1
-6
LedgerService.java
...eplus/modules/warehouse/ledger/service/LedgerService.java
+103
-37
OutboundInfoMapper.xml
...ules/warehouse/outbound/mapper/xml/OutboundInfoMapper.xml
+1
-0
ProfitWarehousingService.java
...e/profitwarehousing/service/ProfitWarehousingService.java
+3
-3
StorageInfo.java
...jeeplus/modules/warehouse/storage/entity/StorageInfo.java
+0
-8
No files found.
src/main/java/com/jeeplus/modules/warehouse/ledger/dto/ExcelExportInfo.java
View file @
a9948db2
...
...
@@ -7,7 +7,7 @@ public class ExcelExportInfo {
private
String
remarks
;
private
int
taskOrSend
;
// 0是收入,1是支出
private
String
task
;
private
String
mask
;
private
String
send
;
private
String
num
;
private
String
model
;
private
String
userName
;
...
...
@@ -60,12 +60,12 @@ public class ExcelExportInfo {
this
.
task
=
task
;
}
public
String
get
Mask
()
{
return
mask
;
public
String
get
Send
()
{
return
send
;
}
public
void
set
Mask
(
String
mask
)
{
this
.
mask
=
mask
;
public
void
set
Send
(
String
send
)
{
this
.
send
=
send
;
}
public
String
getNum
()
{
...
...
src/main/java/com/jeeplus/modules/warehouse/ledger/entity/Ledger.java
View file @
a9948db2
...
...
@@ -25,7 +25,6 @@ public class Ledger extends DataEntity<Ledger> {
private
static
final
long
serialVersionUID
=
1L
;
private
String
name
;
// 物资名称
private
MaterialType
type
;
// 类型
private
String
model
;
// 型号
private
String
shelvesIds
;
// 货架id集合
private
Integer
num
;
// 数量
private
BigDecimal
sum
;
// 总价格
...
...
@@ -41,10 +40,9 @@ public class Ledger extends DataEntity<Ledger> {
super
(
id
);
}
public
Ledger
(
String
name
,
MaterialType
type
,
String
model
)
{
public
Ledger
(
String
name
,
MaterialType
type
)
{
this
.
name
=
name
;
this
.
type
=
type
;
this
.
model
=
model
;
}
@NotNull
(
message
=
"物资名称不能为空"
)
...
...
@@ -67,16 +65,6 @@ public class Ledger extends DataEntity<Ledger> {
this
.
type
=
type
;
}
@NotNull
(
message
=
"型号不能为空"
)
@ExcelField
(
title
=
"型号"
,
align
=
2
,
sort
=
3
)
public
String
getModel
()
{
return
model
;
}
public
void
setModel
(
String
model
)
{
this
.
model
=
model
;
}
@ExcelField
(
title
=
"货架id集合"
,
align
=
2
,
sort
=
4
)
public
String
getShelvesIds
()
{
return
shelvesIds
;
...
...
src/main/java/com/jeeplus/modules/warehouse/ledger/mapper/LedgerMapper.java
View file @
a9948db2
...
...
@@ -18,7 +18,7 @@ import java.util.List;
@MyBatisMapper
public
interface
LedgerMapper
extends
BaseMapper
<
Ledger
>
{
public
Ledger
findByType
AndModel
(
Ledger
ledger
);
public
Ledger
findByType
(
Ledger
ledger
);
//zlt 查询台账主表的货架集合
public
List
<
String
>
findShelvesListByLedgerId
(
@Param
(
"id"
)
String
id
);
}
\ No newline at end of file
src/main/java/com/jeeplus/modules/warehouse/ledger/mapper/xml/LedgerMapper.xml
View file @
a9948db2
...
...
@@ -6,7 +6,6 @@
a.id AS "id",
a.name AS "name",
a.type_id AS "type.id",
a.model AS "model",
a.shelvesids AS "shelvesIds",
a.num AS "num",
a.sum AS "sum",
...
...
@@ -103,7 +102,6 @@
id,
name,
type_id,
model,
shelvesids,
num,
sum,
...
...
@@ -117,7 +115,6 @@
#{id},
#{name},
#{type.id},
#{model},
#{shelvesIds},
#{num},
#{sum},
...
...
@@ -134,7 +131,6 @@
UPDATE t_wh_ledger SET
name = #{name},
type_id = #{type.id},
model = #{model},
shelvesids = #{shelvesIds},
num = #{num},
sum = #{sum},
...
...
@@ -164,7 +160,7 @@
select * FROM t_wh_ledger where ${propertyName} = '${value}'
</select>
<select
id=
"findByType
AndModel
"
resultType=
"Ledger"
>
<select
id=
"findByType"
resultType=
"Ledger"
>
SELECT
<include
refid=
"ledgerColumns"
/>
FROM t_wh_ledger a
...
...
@@ -172,7 +168,6 @@
<where>
a.del_flag = #{DEL_FLAG_NORMAL}
AND a.type_id = #{type.id}
AND a.model = #{model}
</where>
</select>
<select
id=
"findShelvesListByLedgerId"
resultType=
"java.lang.String"
parameterType=
"java.lang.String"
>
...
...
src/main/java/com/jeeplus/modules/warehouse/ledger/service/LedgerService.java
View file @
a9948db2
...
...
@@ -10,6 +10,7 @@ import java.math.BigDecimal;
import
java.util.*
;
import
com.jeeplus.common.utils.DateUtil
;
import
com.jeeplus.common.utils.Encodes
;
import
com.jeeplus.modules.sys.entity.User
;
import
com.jeeplus.modules.sys.utils.UserUtils
;
import
com.jeeplus.modules.warehouse.ledger.Utils.ExcelStyleUtils
;
...
...
@@ -101,8 +102,8 @@ public class LedgerService extends CrudService<LedgerMapper, Ledger> {
@Transactional
(
readOnly
=
false
)
public
void
save
(
Ledger
ledger
)
{
Ledger
oldLeger
=
mapper
.
findByType
AndModel
(
ledger
);
// 判断是否存在同名称
、同类型、同型号
的台账,如果不存在,做新增操作,如果存在,则做修改操作
Ledger
oldLeger
=
mapper
.
findByType
(
ledger
);
// 判断是否存在同名称
品名
的台账,如果不存在,做新增操作,如果存在,则做修改操作
if
(
null
==
oldLeger
||
StringUtils
.
isBlank
(
oldLeger
.
getId
()))
{
super
.
save
(
ledger
);
}
else
{
...
...
@@ -213,21 +214,50 @@ public class LedgerService extends CrudService<LedgerMapper, Ledger> {
eei
.
setBatch
(
si
.
getStorage
().
getBatchNum
());
eei
.
setRemarks
(
si
.
getRemarks
());
eei
.
setTaskOrSend
(
0
);
eei
.
setTask
(
si
.
get
InfoSum
(
).
toString
());
eei
.
set
Mask
(
""
);
eei
.
setTask
(
si
.
get
Amount
().
multiply
(
new
BigDecimal
(
si
.
getNum
())
).
toString
());
eei
.
set
Send
(
""
);
eei
.
setNum
(
si
.
getNum
()
+
""
);
eei
.
setModel
(
si
.
getModel
());
// modelMap
Integer
n
=
modelMap
.
get
(
si
.
getModel
());
if
(
null
==
n
)
{
modelMap
.
put
(
si
.
getModel
(),
modelMap
.
size
());
}
User
user
=
UserUtils
.
get
(
si
.
getCreateBy
().
getId
());
eei
.
setUserName
(
user
.
getLoginName
());
excelExportInfoList
.
add
(
eei
);
}
for
(
OutboundInfo
oi
:
outboundInfoList
)
{
ExcelExportInfo
eei
=
new
ExcelExportInfo
();
eei
.
setMonth
(
DateUtil
.
getMonth
(
oi
.
getCreateDate
())
+
""
);
eei
.
setDay
(
DateUtil
.
getDay
(
oi
.
getCreateDate
())
+
""
);
eei
.
setBatch
(
oi
.
getLedgerInfo
().
getBatchNum
());
eei
.
setRemarks
(
oi
.
getRemarks
());
eei
.
setTaskOrSend
(
1
);
eei
.
setTask
(
""
);
eei
.
setSend
(
oi
.
getLedgerInfo
().
getAmount
()
+
""
);
eei
.
setNum
(
1
+
""
);
eei
.
setModel
(
oi
.
getLedgerInfo
().
getModel
());
Integer
n
=
modelMap
.
get
(
oi
.
getLedgerInfo
().
getModel
());
if
(
null
==
n
)
{
modelMap
.
put
(
oi
.
getLedgerInfo
().
getModel
(),
modelMap
.
size
());
}
User
user
=
UserUtils
.
get
(
oi
.
getCreateBy
().
getId
());
eei
.
setUserName
(
user
.
getLoginName
());
excelExportInfoList
.
add
(
eei
);
}
if
(
modelMap
.
size
()
==
0
)
{
modelMap
.
put
(
" "
,
0
);
}
Map
<
Integer
,
String
>
intModelMap
=
new
HashMap
<>();
for
(
Map
.
Entry
<
String
,
Integer
>
entry
:
modelMap
.
entrySet
())
{
intModelMap
.
put
(
entry
.
getValue
(),
entry
.
getKey
());
}
int
sunRowNum
=
5
+
storageInfoList
.
size
()
+
outboundInfoList
.
size
();
// 创建工作薄
...
...
@@ -241,12 +271,14 @@ public class LedgerService extends CrudService<LedgerMapper, Ledger> {
int
cellNUm
=
8
+
modelMap
.
size
();
int
num
=
cellNUm
/
3
;
// 第二行使用的列数
//设置数据
for
(
int
row
=
0
;
row
<
sunRowNum
;
row
++)
{
XSSFRow
sheetRow
=
sheet
.
createRow
(
row
);
if
(
0
==
row
)
{
sheetRow
.
setHeightInPoints
(
30
);
for
(
int
i
=
0
;
i
<
22
;
i
++)
{
for
(
int
i
=
0
;
i
<
cellNUm
;
i
++)
{
if
(
0
==
i
)
{
XSSFCell
cell
=
sheetRow
.
createCell
(
i
);
cell
.
setCellValue
(
"被 装 物 资 库 房 帐"
);
...
...
@@ -259,16 +291,16 @@ public class LedgerService extends CrudService<LedgerMapper, Ledger> {
}
if
(
1
==
row
)
{
sheetRow
.
setHeightInPoints
(
20
);
for
(
int
i
=
0
;
i
<
22
;
i
++)
{
for
(
int
i
=
0
;
i
<
cellNUm
;
i
++)
{
if
(
0
==
i
)
{
XSSFCell
cell
=
sheetRow
.
createCell
(
i
);
cell
.
setCellValue
(
"品名代码:"
+
materialType
.
getCode
());
cell
.
setCellStyle
(
twoStyle
);
}
else
if
(
4
==
i
)
{
}
else
if
(
num
==
i
)
{
XSSFCell
cell1
=
sheetRow
.
createCell
(
i
);
cell1
.
setCellValue
(
"品名:"
+
materialType
.
getName
());
cell1
.
setCellStyle
(
twoStyle
);
}
else
if
(
12
==
i
)
{
}
else
if
(
num
+
num
==
i
)
{
XSSFCell
cell2
=
sheetRow
.
createCell
(
i
);
cell2
.
setCellValue
(
"计量单位:"
+
materialType
.
getUnit
());
cell2
.
setCellStyle
(
twoStyle
);
...
...
@@ -281,7 +313,7 @@ public class LedgerService extends CrudService<LedgerMapper, Ledger> {
}
if
(
2
==
row
)
{
sheetRow
.
setHeightInPoints
(
15
);
for
(
int
i
=
0
;
i
<
22
;
i
++)
{
for
(
int
i
=
0
;
i
<
cellNUm
;
i
++)
{
if
(
0
==
i
)
{
XSSFCell
cell
=
sheetRow
.
createCell
(
i
);
cell
.
setCellValue
(
DateUtil
.
getYear
(
eTime
)
+
" 年"
);
...
...
@@ -307,7 +339,7 @@ public class LedgerService extends CrudService<LedgerMapper, Ledger> {
XSSFCell
cell5
=
sheetRow
.
createCell
(
i
);
cell5
.
setCellValue
(
"结存"
);
cell5
.
setCellStyle
(
threeStyle
);
}
else
if
(
2
1
==
i
)
{
}
else
if
(
cellNUm
-
1
==
i
)
{
XSSFCell
cell6
=
sheetRow
.
createCell
(
i
);
cell6
.
setCellValue
(
"登记人"
);
cell6
.
setCellStyle
(
threeStyle
);
...
...
@@ -319,69 +351,103 @@ public class LedgerService extends CrudService<LedgerMapper, Ledger> {
}
if
(
3
==
row
)
{
sheetRow
.
setHeightInPoints
(
15
);
for
(
int
i
=
0
;
i
<
22
;
i
++)
{
for
(
int
i
=
0
;
i
<
cellNUm
;
i
++)
{
if
(
6
==
i
)
{
XSSFCell
cell2
=
sheetRow
.
createCell
(
i
);
cell2
.
setCellValue
(
"数量"
);
cell2
.
setCellStyle
(
ExcelStyleUtils
.
topThreeCellStyle
(
workbook
)
);
cell2
.
setCellStyle
(
threeStyle
);
}
else
if
(
7
==
i
)
{
XSSFCell
cell3
=
sheetRow
.
createCell
(
i
);
cell3
.
setCellValue
(
"号型"
);
cell3
.
setCellStyle
(
ExcelStyleUtils
.
topThreeCellStyle
(
workbook
)
);
cell3
.
setCellStyle
(
threeStyle
);
}
else
{
XSSFCell
cell3
=
sheetRow
.
createCell
(
i
);
cell3
.
setCellStyle
(
ExcelStyleUtils
.
topThreeCellStyle
(
workbook
)
);
cell3
.
setCellStyle
(
threeStyle
);
}
}
}
if
(
4
==
row
)
{
sheetRow
.
setHeightInPoints
(
15
);
for
(
int
i
=
0
;
i
<
22
;
i
++)
{
for
(
int
i
=
0
;
i
<
cellNUm
;
i
++)
{
if
(
0
==
i
)
{
XSSFCell
cell
=
sheetRow
.
createCell
(
i
);
cell
.
setCellValue
(
"月"
);
cell
.
setCellStyle
(
ExcelStyleUtils
.
topThreeCellStyle
(
workbook
)
);
cell
.
setCellStyle
(
threeStyle
);
}
else
if
(
1
==
i
)
{
XSSFCell
cell1
=
sheetRow
.
createCell
(
i
);
cell1
.
setCellValue
(
"日"
);
cell1
.
setCellStyle
(
ExcelStyleUtils
.
topThreeCellStyle
(
workbook
));
}
else
{
cell1
.
setCellStyle
(
threeStyle
);
}
else
if
(
i
>
6
&&
i
<=
(
6
+
modelMap
.
size
()))
{
XSSFCell
cell1
=
sheetRow
.
createCell
(
i
);
cell1
.
setCellValue
(
intModelMap
.
get
(
i
-
7
));
cell1
.
setCellStyle
(
threeStyle
);
}
else
{
XSSFCell
cell
=
sheetRow
.
createCell
(
i
);
cell
.
setCellStyle
(
ExcelStyleUtils
.
topThreeCellStyle
(
workbook
)
);
cell
.
setCellStyle
(
threeStyle
);
}
}
}
if
(
row
>=
5
)
{
ExcelExportInfo
eei
=
excelExportInfoList
.
get
(
row
-
5
);
for
(
int
i
=
0
;
i
<
cellNUm
;
i
++)
{
XSSFCell
cell
=
sheetRow
.
createCell
(
i
);
if
(
0
==
i
)
{
cell
.
setCellValue
(
eei
.
getMonth
());
}
else
if
(
1
==
i
)
{
cell
.
setCellValue
(
eei
.
getDay
());
}
else
if
(
2
==
i
)
{
cell
.
setCellValue
(
eei
.
getBatch
());
}
else
if
(
3
==
i
)
{
cell
.
setCellValue
(
eei
.
getRemarks
());
}
else
if
(
4
==
i
)
{
cell
.
setCellValue
(
eei
.
getTask
());
}
else
if
(
5
==
i
)
{
cell
.
setCellValue
(
eei
.
getSend
());
}
else
if
(
6
==
i
)
{
cell
.
setCellValue
(
eei
.
getNum
());
}
else
if
(
i
>
6
&&
i
<=
(
6
+
modelMap
.
size
()))
{
if
(
i
==
modelMap
.
get
(
eei
.
getModel
())
+
7
)
{
cell
.
setCellValue
(
eei
.
getModel
());
}
}
else
if
(
i
==
cellNUm
-
1
)
{
cell
.
setCellValue
(
eei
.
getUserName
());
}
cell
.
setCellStyle
(
threeStyle
);
}
}
// 设置列宽 sheet.setColumnWidth(0, 16 * 256); 第一个参数为第几个单元格,第二个为16个字符宽度
}
sheet
.
addMergedRegion
(
new
CellRangeAddress
(
0
,
0
,
0
,
21
));
sheet
.
addMergedRegion
(
new
CellRangeAddress
(
0
,
0
,
0
,
cellNUm
-
1
));
sheet
.
addMergedRegion
(
new
CellRangeAddress
(
1
,
1
,
0
,
num
-
1
));
sheet
.
addMergedRegion
(
new
CellRangeAddress
(
1
,
1
,
num
,
num
+
num
-
1
));
sheet
.
addMergedRegion
(
new
CellRangeAddress
(
1
,
1
,
num
+
num
,
cellNUm
-
1
));
sheet
.
addMergedRegion
(
new
CellRangeAddress
(
1
,
1
,
0
,
3
));
sheet
.
addMergedRegion
(
new
CellRangeAddress
(
1
,
1
,
4
,
11
));
sheet
.
addMergedRegion
(
new
CellRangeAddress
(
1
,
1
,
12
,
21
));
sheet
.
addMergedRegion
(
new
CellRangeAddress
(
2
,
3
,
0
,
1
));
sheet
.
addMergedRegion
(
new
CellRangeAddress
(
2
,
4
,
2
,
2
));
sheet
.
addMergedRegion
(
new
CellRangeAddress
(
2
,
4
,
3
,
3
));
sheet
.
addMergedRegion
(
new
CellRangeAddress
(
2
,
4
,
4
,
4
));
sheet
.
addMergedRegion
(
new
CellRangeAddress
(
2
,
4
,
5
,
5
));
sheet
.
addMergedRegion
(
new
CellRangeAddress
(
2
,
2
,
6
,
20
));
sheet
.
addMergedRegion
(
new
CellRangeAddress
(
2
,
4
,
21
,
2
1
));
sheet
.
addMergedRegion
(
new
CellRangeAddress
(
2
,
2
,
6
,
6
+
modelMap
.
size
()
));
sheet
.
addMergedRegion
(
new
CellRangeAddress
(
2
,
4
,
6
+
modelMap
.
size
()
+
1
,
cellNUm
-
1
));
sheet
.
addMergedRegion
(
new
CellRangeAddress
(
3
,
4
,
6
,
6
));
sheet
.
addMergedRegion
(
new
CellRangeAddress
(
3
,
3
,
7
,
20
));
FileOutputStream
out
=
null
;
if
(
modelMap
.
size
()
>
1
)
{
sheet
.
addMergedRegion
(
new
CellRangeAddress
(
3
,
3
,
7
,
7
+
modelMap
.
size
()
-
1
));
}
try
{
out
=
new
FileOutputStream
(
new
File
(
"D:/excel.xlsx"
));
workbook
.
write
(
out
);
//out = new FileOutputStream(new File("D:/excel.xlsx"));
//workbook.write(out);
respons
.
reset
();
respons
.
setContentType
(
"application/octet-stream; charset=utf-8"
);
respons
.
setHeader
(
"Content-Disposition"
,
"attachment; filename="
+
Encodes
.
urlEncode
(
beginTime
+
"-"
+
endTime
+
"被装物资库房帐.xlsx"
));
workbook
.
write
(
respons
.
getOutputStream
());
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
finally
{
try
{
if
(
null
!=
out
)
{
out
.
flush
();
out
.
close
();
}
workbook
.
close
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
...
...
src/main/java/com/jeeplus/modules/warehouse/outbound/mapper/xml/OutboundInfoMapper.xml
View file @
a9948db2
...
...
@@ -17,6 +17,7 @@
tpye.name AS "ledgerInfo.type.name",
ledgerInfo.model AS "ledgerInfo.model",
ledgerInfo.amount AS "ledgerInfo.amount",
ledgerInfo.batch_num AS "ledgerInfo.batchNum",
a.del_flag AS "delFlag"
</sql>
...
...
src/main/java/com/jeeplus/modules/warehouse/profitwarehousing/service/ProfitWarehousingService.java
View file @
a9948db2
...
...
@@ -189,15 +189,15 @@ public class ProfitWarehousingService extends CrudService<ProfitWarehousingMappe
@Transactional
(
readOnly
=
false
)
public
void
inLedgerInfo
(
ProfitWarehousingInfo
profitWarehousingInfo
)
{
QrCode
qrCode
=
qrCodeService
.
get
(
profitWarehousingInfo
.
getQrCode
().
getId
());
Ledger
ledger
=
new
Ledger
(
profitWarehousingInfo
.
getName
(),
profitWarehousingInfo
.
getType
()
,
profitWarehousingInfo
.
getMarking
()
);
Ledger
oldLeger
=
ledgerMapper
.
findByType
AndModel
(
ledger
);
Ledger
ledger
=
new
Ledger
(
profitWarehousingInfo
.
getName
(),
profitWarehousingInfo
.
getType
());
Ledger
oldLeger
=
ledgerMapper
.
findByType
(
ledger
);
LedgerInfo
ledgerInfo
=
new
LedgerInfo
();
//名称
ledgerInfo
.
setName
(
ledger
.
getName
());
//类型
ledgerInfo
.
setType
(
ledger
.
getType
());
//型号
ledgerInfo
.
setModel
(
ledger
.
getModel
());
//
ledgerInfo.setModel(ledger.getModel());
//物资编码
ledgerInfo
.
setCode
(
qrCode
.
getCode
());
//二维码id
...
...
src/main/java/com/jeeplus/modules/warehouse/storage/entity/StorageInfo.java
View file @
a9948db2
...
...
@@ -33,7 +33,6 @@ public class StorageInfo extends DataEntity<StorageInfo> {
private
String
warehouseIds
;
// 仓库id集合
private
BigDecimal
amount
;
// 单价
private
int
num
;
// 数量
private
BigDecimal
infoSum
;
// 总价
private
List
<
Shelves
>
shelvesList
;
// 货架id
private
List
<
Warehouse
>
warehouseList
;
// 仓库外键
...
...
@@ -164,13 +163,6 @@ public class StorageInfo extends DataEntity<StorageInfo> {
this
.
warehouseList
=
warehouseList
;
}
public
BigDecimal
getInfoSum
()
{
return
infoSum
;
}
public
void
setInfoSum
(
BigDecimal
infoSum
)
{
this
.
infoSum
=
infoSum
;
}
public
Date
getBeginTime
()
{
return
beginTime
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment