Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
H
hp-smart
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
platform
hp-smart
Commits
8bd0cbe5
Commit
8bd0cbe5
authored
Jan 31, 2024
by
yukang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
生产订单分派增加厂区
parent
b711bbf5
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
107 additions
and
59 deletions
+107
-59
ServiceHPKC003.java
.../java/com/baosight/hpjx/hp/kc/service/ServiceHPKC003.java
+0
-1
HPPZ011.xml
src/main/java/com/baosight/hpjx/hp/pz/sql/HPPZ011.xml
+3
-0
HPSC005.java
src/main/java/com/baosight/hpjx/hp/sc/domain/HPSC005.java
+32
-0
ServiceHPSC005.java
.../java/com/baosight/hpjx/hp/sc/service/ServiceHPSC005.java
+6
-4
ServiceHPSC098.java
.../java/com/baosight/hpjx/hp/sc/service/ServiceHPSC098.java
+22
-20
HPSC005.xml
src/main/java/com/baosight/hpjx/hp/sc/sql/HPSC005.xml
+13
-6
HPSC005.js
src/main/webapp/HP/SC/HPSC005.js
+3
-16
HPSC005.jsp
src/main/webapp/HP/SC/HPSC005.jsp
+1
-0
HPSC098.js
src/main/webapp/HP/SC/HPSC098.js
+14
-7
HPSC098.jsp
src/main/webapp/HP/SC/HPSC098.jsp
+13
-5
No files found.
src/main/java/com/baosight/hpjx/hp/kc/service/ServiceHPKC003.java
View file @
8bd0cbe5
...
...
@@ -96,7 +96,6 @@ public class ServiceHPKC003 extends ServiceBase {
//同步生产计划
DaoUtils
.
update
(
"HPSC004.update"
,
this
.
synchronousPlan
(
fKc003
));
// 修改库存
HPKCTools
.
updateStock
(
fKc003
.
getWhCode
(),
fKc003
.
getInventRecordId
(),
fKc003
.
getAmount
(),
fKc003
.
getWeight
());
...
...
src/main/java/com/baosight/hpjx/hp/pz/sql/HPPZ011.xml
View file @
8bd0cbe5
...
...
@@ -45,6 +45,9 @@
</sql>
<sql
id=
"getCondition"
>
<isNotEmpty
prepend=
" AND "
property=
"id"
>
ID = #id#
</isNotEmpty>
<isNotEmpty
prepend=
" AND "
property=
"factoryName"
>
FACTORY_NAME = #factoryName#
</isNotEmpty>
...
...
src/main/java/com/baosight/hpjx/hp/sc/domain/HPSC005.java
View file @
8bd0cbe5
...
...
@@ -49,6 +49,8 @@ public class HPSC005 extends DaoEPBase {
public
static
final
String
FIELD_FILE_PATH4
=
"filePath4"
;
/* 文件地址4*/
public
static
final
String
FIELD_FILE_PATH5
=
"filePath5"
;
/* 文件地址5*/
public
static
final
String
FIELD_INVENT_RECORD_ID
=
"inventRecordId"
;
public
static
final
String
FIELD_FACTORY_CODE
=
"factoryCode"
;
/* 厂区编码*/
public
static
final
String
FIELD_FACTORY_NAME
=
"factoryName"
;
/* 厂区名称*/
public
static
final
String
COL_ID
=
"ID"
;
public
static
final
String
COL_COMPANY_CODE
=
"COMPANY_CODE"
;
/* 企业编码 预留*/
...
...
@@ -78,6 +80,8 @@ public class HPSC005 extends DaoEPBase {
public
static
final
String
COL_FILE_PATH4
=
"FILE_PATH4"
;
/* 文件地址4*/
public
static
final
String
COL_FILE_PATH5
=
"FILE_PATH5"
;
/* 文件地址5*/
public
static
final
String
COL_INVENT_RECORD_ID
=
"INVENT_RECORD_ID"
;
public
static
final
String
COL_FACTORY_CODE
=
"FACTORY_CODE"
;
/* 厂区编码*/
public
static
final
String
COL_FACTORY_NAME
=
"FACTORY_NAME"
;
/* 厂区名称*/
public
static
final
String
QUERY
=
"t_hpsc005.query"
;
public
static
final
String
COUNT
=
"t_hpsc005.count"
;
...
...
@@ -127,6 +131,8 @@ public class HPSC005 extends DaoEPBase {
private
BigDecimal
partWidth
=
new
BigDecimal
(
0.00
);
/* 宽*/
private
BigDecimal
partThick
=
new
BigDecimal
(
0.00
);
/* 厚*/
private
String
remark1
;
private
String
factoryCode
=
" "
;
/* 厂区编码*/
private
String
factoryName
=
" "
;
/* 厂区名称*/
/**
* initialize the metadata.
...
...
@@ -314,6 +320,14 @@ public class HPSC005 extends DaoEPBase {
eiColumn
.
setFieldLength
(
10
);
eiColumn
.
setDescName
(
"产品-厚"
);
eiMetadata
.
addMeta
(
eiColumn
);
eiColumn
=
new
EiColumn
(
FIELD_FACTORY_CODE
);
eiColumn
.
setDescName
(
"厂区编码"
);
eiMetadata
.
addMeta
(
eiColumn
);
eiColumn
=
new
EiColumn
(
FIELD_FACTORY_NAME
);
eiColumn
.
setDescName
(
"厂区名称"
);
eiMetadata
.
addMeta
(
eiColumn
);
}
/**
* get the unitWt - 单重.
...
...
@@ -367,7 +381,21 @@ public class HPSC005 extends DaoEPBase {
public
void
setPrdtSpec
(
String
prdtSpec
)
{
this
.
prdtSpec
=
prdtSpec
;
}
public
String
getFactoryCode
()
{
return
factoryCode
;
}
public
void
setFactoryCode
(
String
factoryCode
)
{
this
.
factoryCode
=
factoryCode
;
}
public
String
getFactoryName
()
{
return
factoryName
;
}
public
void
setFactoryName
(
String
factoryName
)
{
this
.
factoryName
=
factoryName
;
}
/**
* the constructor.
*/
...
...
@@ -935,6 +963,8 @@ public class HPSC005 extends DaoEPBase {
setPartWidth
(
NumberUtils
.
toBigDecimal
(
StringUtils
.
toString
(
map
.
get
(
"partWidth"
)),
partWidth
));
setPartThick
(
NumberUtils
.
toBigDecimal
(
StringUtils
.
toString
(
map
.
get
(
"partThick"
)),
partThick
));
setUnitWt
(
NumberUtils
.
toBigDecimal
(
StringUtils
.
toString
(
map
.
get
(
FIELD_UNIT_WT
)),
unitWt
));
setFactoryCode
(
StringUtils
.
defaultIfEmpty
(
StringUtils
.
toString
(
map
.
get
(
FIELD_FACTORY_CODE
)),
factoryCode
));
setFactoryName
(
StringUtils
.
defaultIfEmpty
(
StringUtils
.
toString
(
map
.
get
(
FIELD_FACTORY_NAME
)),
factoryName
));
}
...
...
@@ -984,6 +1014,8 @@ public class HPSC005 extends DaoEPBase {
map
.
put
(
"partWidth"
,
StringUtils
.
toString
(
partWidth
,
eiMetadata
.
getMeta
(
"partWidth"
)));
map
.
put
(
"partThick"
,
StringUtils
.
toString
(
partThick
,
eiMetadata
.
getMeta
(
"partThick"
)));
map
.
put
(
FIELD_UNIT_WT
,
StringUtils
.
toString
(
unitWt
,
eiMetadata
.
getMeta
(
FIELD_UNIT_WT
)));
map
.
put
(
FIELD_FACTORY_CODE
,
StringUtils
.
toString
(
factoryCode
,
eiMetadata
.
getMeta
(
FIELD_FACTORY_CODE
)));
map
.
put
(
FIELD_FACTORY_NAME
,
StringUtils
.
toString
(
factoryName
,
eiMetadata
.
getMeta
(
FIELD_FACTORY_NAME
)));
return
map
;
}
...
...
src/main/java/com/baosight/hpjx/hp/sc/service/ServiceHPSC005.java
View file @
8bd0cbe5
package
com
.
baosight
.
hpjx
.
hp
.
sc
.
service
;
import
com.baosight.hpjx.core.dao.DaoUtils
;
import
com.baosight.hpjx.hp.pz.domain.HPPZ011
;
import
com.baosight.hpjx.hp.sc.domain.HPSC004
;
import
com.baosight.hpjx.hp.sc.domain.HPSC005
;
import
com.baosight.iplat4j.core.ei.EiBlock
;
...
...
@@ -129,9 +130,9 @@ public class ServiceHPSC005 extends ServiceBase {
public
EiInfo
assign
(
EiInfo
eiInfo
)
{
try
{
String
ids
=
eiInfo
.
get
(
"ids"
).
toString
();
String
orgId
=
eiInfo
.
get
(
"
orgI
d"
).
toString
();
String
orgId
=
eiInfo
.
get
(
"
i
d"
).
toString
();
//先找到分派的组织
Map
map
=(
Map
)
dao
.
get
(
"XSOG0801.queryByOrgId"
,
"orgI
d"
,
orgId
);
HPPZ011
HPPZ011
=(
HPPZ011
)
dao
.
get
(
"HPPZ011.get"
,
"i
d"
,
orgId
);
String
[]
id
=
ids
.
split
(
","
);
for
(
int
i
=
0
;
i
<
id
.
length
;
i
++)
{
...
...
@@ -139,8 +140,9 @@ public class ServiceHPSC005 extends ServiceBase {
HPSC005
HPSC005
=
new
HPSC005
();
HPSC005
.
setId
(
NumberUtils
.
toLong
(
id
[
i
]));
HPSC005
.
setStatus
(
1
);
HPSC005
.
setOrgNo
(
map
.
get
(
"orgId"
).
toString
());
HPSC005
.
setOrgName
(
map
.
get
(
"orgCname"
).
toString
());
HPSC005
.
setOrgNo
(
HPPZ011
.
getGroupCode
());
HPSC005
.
setFactoryCode
(
HPPZ011
.
getFactoryCode
());
HPSC005
.
setFactoryName
(
HPPZ011
.
getFactoryName
());
DaoUtils
.
update
(
"HPSC005.updateAssign"
,
HPSC005
.
toMap
());
}
...
...
src/main/java/com/baosight/hpjx/hp/sc/service/ServiceHPSC098.java
View file @
8bd0cbe5
package
com
.
baosight
.
hpjx
.
hp
.
sc
.
service
;
import
com.baosight.hpjx.common.DdynamicEnum
;
import
com.baosight.hpjx.core.security.UserSessionUtils
;
import
com.baosight.hpjx.hp.pz.domain.HPPZ011
;
import
com.baosight.hpjx.hp.sc.domain.HPSC004
;
import
com.baosight.hpjx.hp.sc.domain.HPSC005
;
import
com.baosight.hpjx.util.CommonMethod
;
import
com.baosight.hpjx.util.LogUtils
;
import
com.baosight.iplat4j.core.ei.EiBlock
;
import
com.baosight.iplat4j.core.ei.EiConstant
;
import
com.baosight.iplat4j.core.ei.EiInfo
;
import
com.baosight.iplat4j.core.exception.PlatException
;
import
com.baosight.iplat4j.core.service.impl.ServiceBase
;
import
com.baosight.xservices.xs.og.domain.XSOG01
;
import
java.util.Arrays
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
...
...
@@ -23,30 +29,26 @@ public class ServiceHPSC098 extends ServiceBase {
* 画面初始化.
*/
public
EiInfo
initLoad
(
EiInfo
inInfo
)
{
EiInfo
outInfo
=
new
EiInfo
();
outInfo
.
set
(
"inqu_status-0-companyCode"
,
UserSessionUtils
.
getCompanyCode
());
outInfo
.
set
(
"inqu_status-0-orgCname"
,
inInfo
.
get
(
"inqu_status-0-orgCname"
));
outInfo
=
super
.
query
(
outInfo
,
"HPPZ011.query"
,
new
XSOG01
());
EiBlock
r3Block
=
new
EiBlock
(
"result"
);
r3Block
.
setRows
(
outInfo
.
getBlock
(
EiConstant
.
resultBlock
).
getRows
());
outInfo
.
addBlock
(
r3Block
);
return
outInfo
;
try
{
Map
queryMap
=
new
HashMap
();
queryMap
.
put
(
"orgType"
,
"dept"
);
CommonMethod
.
initBlock
(
inInfo
,
Arrays
.
asList
(
DdynamicEnum
.
ORG_RECORD_BLOCK_ID
),
queryMap
);
CommonMethod
.
initBlock
(
inInfo
,
Arrays
.
asList
(
DdynamicEnum
.
GROUP_RECORD_BLOCK_ID
),
null
);
inInfo
.
addBlock
(
EiConstant
.
resultBlock
).
addBlockMeta
(
new
HPPZ011
().
eiMetadata
);
}
catch
(
PlatException
e
)
{
LogUtils
.
setDetailMsg
(
inInfo
,
e
,
"初始化失败"
);
}
return
inInfo
;
}
@Override
public
EiInfo
query
(
EiInfo
inInfo
)
{
XSOG01
XSOG01
=
new
XSOG01
();
EiInfo
outInfo
=
new
EiInfo
();
//添加返回到前台的块,块名和前台的对应
EiBlock
eiBlock
=
outInfo
.
addBlock
(
"result"
);
HashMap
params
=
new
HashMap
();
params
.
put
(
"orgCname"
,
inInfo
.
get
(
"inqu_status-0-orgCname"
));
params
.
put
(
"companyCode"
,
UserSessionUtils
.
getCompanyCode
());
List
list
=
dao
.
query
(
"query.query"
,
params
,
0
,-
999999
);
outInfo
.
addBlock
(
EiConstant
.
resultBlock
).
addBlockMeta
(
XSOG01
.
eiMetadata
);
outInfo
.
addBlock
(
EiConstant
.
resultBlock
).
addRows
(
list
);
outInfo
.
getBlock
(
EiConstant
.
resultBlock
).
set
(
"limit"
,
list
.
size
());
return
outInfo
;
try
{
inInfo
=
super
.
query
(
inInfo
,
HPPZ011
.
QUERY
,
new
HPPZ011
());
}
catch
(
Exception
e
)
{
LogUtils
.
setDetailMsg
(
inInfo
,
e
,
"查询失败"
);
}
return
inInfo
;
}
}
src/main/java/com/baosight/hpjx/hp/sc/sql/HPSC005.xml
View file @
8bd0cbe5
...
...
@@ -150,7 +150,9 @@
PRDT_THICK as "prdtThick",
<!-- 厚 -->
PART_LENGTH as "partLength",
<!-- 长 -->
PART_WIDTH as "partWidth",
<!-- 宽 -->
PART_THICK as "partThick"
<!-- 厚 -->
PART_THICK as "partThick",
<!-- 厚 -->
FACTORY_CODE as "factoryCode",
<!-- 厂区编码 -->
FACTORY_NAME as "factoryName"
<!-- 厂区名称 -->
FROM ${hpjxSchema}.T_HPSC005 WHERE 1=1
<include
refid=
"condition"
/>
<dynamic
prepend=
"ORDER BY"
>
...
...
@@ -268,13 +270,14 @@
PRDT_THICK,
<!-- 厚 -->
PART_LENGTH,
<!-- 长 -->
PART_WIDTH,
<!-- 宽 -->
PART_THICK
<!-- 厚 -->
)
PART_THICK,
<!-- 厚 -->
FACTORY_CODE,
<!-- 厂区编码 -->
FACTORY_NAME
<!-- 厂区名称 -->
)
VALUES (#id#, #companyCode#, #projCode#, #projName#, #productionOrderNo#,#inventRecordId#, #prdtType#, #prdtCode#,
#prdtName#, #planCompletionDate#, #num#,#unitWt#, #totalWt#, #status#, #orgNo#, #orgName#, #createdBy#, #createdTime#,
#updatedBy#, #updatedTime#, #depCode#, #remark#, #filePath1#, #filePath2#, #filePath3#, #filePath4#, #filePath5#,
#prdtSpec#,#partType#,#partCode#,#partName#,#partSpec#,#remark1#,
#prdtLength#,#prdtWidth#,#prdtThick#,#partLength#,#partWidth#,#partThick#)
#prdtLength#,#prdtWidth#,#prdtThick#,#partLength#,#partWidth#,#partThick#
, #factoryCode#, #factoryName#
)
</insert>
<delete
id=
"delete"
>
...
...
@@ -309,7 +312,9 @@
FILE_PATH2 = #filePath2#,
<!-- 文件地址2 -->
FILE_PATH3 = #filePath3#,
<!-- 文件地址3 -->
FILE_PATH4 = #filePath4#,
<!-- 文件地址4 -->
FILE_PATH5 = #filePath5#
<!-- 文件地址5 -->
FILE_PATH5 = #filePath5#,
<!-- 文件地址5 -->
FACTORY_CODE = #factoryCode#,
<!-- 厂区编码 -->
FACTORY_NAME = #factoryName#
<!-- 厂区名称 -->
WHERE
ID = #id#
</update>
...
...
@@ -320,7 +325,9 @@
SET
STATUS = #status#,
<!-- 状态 0-未派工,1-已派工 -->
ORG_NO = #orgNo#,
<!-- 生产组编码 -->
ORG_NAME = #orgName#,
<!-- 生产组名称 -->
-- ORG_NAME = #orgName#,
<!-- 生产组名称 -->
FACTORY_CODE = #factoryCode#,
<!-- 厂区编码 -->
FACTORY_NAME = #factoryName#,
<!-- 厂区名称 -->
UPDATED_BY = #updatedBy#,
<!-- 更新人 -->
UPDATED_TIME = #updatedTime#
<!-- 更新时间 -->
WHERE
...
...
src/main/webapp/HP/SC/HPSC005.js
View file @
8bd0cbe5
...
...
@@ -5,15 +5,7 @@ $(function () {
resultGrid
.
dataSource
.
page
(
1
);
});
$
(
"#inqu_status-0-orgNo"
).
on
(
"click"
,
function
()
{
JSColorbox
.
open
({
href
:
"HPSC098?methodName=initLoad&isInput"
,
title
:
"<div style='text-align: center;'>选择组织</div>"
,
width
:
"40%"
,
height
:
"70%"
,
callbackName
:
getOrgCallback
});
})
$
(
"#ASSIGN"
).
on
(
"click"
,
function
()
{
//重置全局变量
...
...
@@ -77,10 +69,10 @@ function showUploadFile(id) {
height
:
"80%"
,
});
}
let
assignCallback
=
function
(
orgI
d
)
{
let
assignCallback
=
function
(
i
d
)
{
var
info
=
new
EiInfo
()
info
.
set
(
"ids"
,
ids
.
join
(
','
));
info
.
set
(
"
orgId"
,
orgI
d
);
info
.
set
(
"
id"
,
i
d
);
EiCommunicator
.
send
(
"HPSC005"
,
"assign"
,
info
,{
onSuccess
:
function
(
ei
){
//返回结果集
if
(
ei
[
"status"
]
==
-
1
)
{
...
...
@@ -101,7 +93,3 @@ let assignCallback = function (orgId) {
}
let
getOrgCallback
=
function
(
orgId
)
{
$
(
"#inqu_status-0-orgNo"
).
val
(
orgId
);
JSColorbox
.
close
();
}
\ No newline at end of file
src/main/webapp/HP/SC/HPSC005.jsp
View file @
8bd0cbe5
...
...
@@ -59,6 +59,7 @@
<EF:EFOption
label=
"未派工"
value=
"0"
/>
<EF:EFOption
label=
"已派工"
value=
"1"
/>
</EF:EFComboColumn>
<EF:EFColumn
enable=
"false"
ename=
"factoryName"
cname=
"厂区名称"
/>
<EF:EFColumn
enable=
"false"
ename=
"orgName"
cname=
"生产组"
/>
<EF:EFColumn
ename=
"operator"
cname=
"操作"
width=
"100"
enable=
"false"
readonly=
"false"
/>
</EF:EFGrid>
...
...
src/main/webapp/HP/SC/HPSC098.js
View file @
8bd0cbe5
$
(
function
()
{
$
(
"#QUERY"
).
on
(
"click"
,
function
()
{
resultGrid
.
dataSource
.
page
(
1
);
});
// 查询
$
(
"#QUERY"
).
on
(
"click"
,
query
);
IPLATUI
.
EFGrid
=
{
"result"
:
{
pageable
:
{
...
...
@@ -24,13 +23,21 @@ $(function () {
let
row
=
rows
[
0
];
let
isInput
=
decodeURI
(
window
.
location
.
href
.
split
(
"&"
)[
1
]);
if
(
isInput
===
"isInput"
){
parent
.
JSColorbox
.
setValueCallback
(
row
.
orgI
d
);
parent
.
JSColorbox
.
setValueCallback
(
row
.
i
d
);
return
;
};
JSUtils
.
confirm
(
"确定分派? "
,
{
ok
:
function
()
{
parent
.
JSColorbox
.
setValueCallback
(
row
.
orgI
d
);
parent
.
JSColorbox
.
setValueCallback
(
row
.
i
d
);
}
});
});
});
\ No newline at end of file
});
$
(
window
).
load
(
function
()
{
// 查询
query
();
});
let
query
=
function
()
{
resultGrid
.
dataSource
.
page
(
1
);
}
\ No newline at end of file
src/main/webapp/HP/SC/HPSC098.jsp
View file @
8bd0cbe5
...
...
@@ -8,16 +8,24 @@
<EF:EFPage
title=
"组织机构"
>
<EF:EFRegion
id=
"inqu"
title=
"查询条件"
>
<div
class=
"row"
>
<EF:EFInput
ename=
"factoryCname"
cname=
"厂区名称"
blockId=
"inqu_status"
row=
"0"
/>
<EF:EFInput
ename=
"groupName"
cname=
"组织名称"
blockId=
"inqu_status"
row=
"0"
/>
<EF:EFInput
cname=
"厂区名称:"
ename=
"factoryName"
blockId=
"inqu_status"
row=
"0"
colWidth=
"3"
/>
<EF:EFSelect
cname=
"生产组名称"
ename=
"groupCode"
blockId=
"inqu_status"
row=
"0"
colWidth=
"3"
filter=
"contains"
>
<EF:EFOption
label=
"全部"
value=
""
/>
<EF:EFOptions
blockId=
"group_record_block_id"
textField=
"textField"
valueField=
"valueField"
/>
</EF:EFSelect>
</div>
</EF:EFRegion>
<EF:EFRegion
id=
"result"
title=
"明细信息"
>
<EF:EFGrid
blockId=
"result"
autoDraw=
"override"
isFloat=
"true"
checkMode=
"single,row"
>
<EF:EFColumn
ename=
"orgId"
cname=
"内码"
hidden=
"true"
/>
<EF:EFColumn
ename=
"orgEname"
cname=
"组织编码"
enable=
"false"
width=
"130"
align=
"center"
/>
<EF:EFColumn
ename=
"orgCname"
cname=
"组织名称"
enable=
"false"
width=
"130"
align=
"center"
/>
<EF:EFColumn
ename=
"id"
cname=
"内码"
hidden=
"true"
/>
<EF:EFColumn
ename=
"factoryCode"
cname=
"厂区编码"
enable=
"false"
width=
"120"
align=
"center"
/>
<EF:EFPopupColumn
ename=
"factoryName"
cname=
"厂区名称"
enable=
"false"
width=
"120"
align=
"center"
/>
<EF:EFComboColumn
ename=
"groupCode"
cname=
"生产组名称"
width=
"120"
align=
"center"
blockName=
"org_record_block_id"
textField=
"textField"
valueField=
"valueField"
columnTemplate=
"#=textField#"
itemTemplate=
"#=textField#"
required=
"true"
>
</EF:EFComboColumn>
</EF:EFGrid>
</EF:EFRegion>
</EF:EFPage>
...
...
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