Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
leaf-hlcm
Project
Project
Details
Activity
Releases
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
hlcm
leaf-hlcm
Commits
0344fd32
Commit
0344fd32
authored
Mar 23, 2023
by
18083
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
手工凭证变更调整
parent
d032d792
Changes
14
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
387 additions
and
35 deletions
+387
-35
excel_system_parameter.lwm
...app/WEB-INF/classes/hls/HLS536/excel_system_parameter.lwm
+20
-0
hls_attachment_tmp.lwm
.../webapp/WEB-INF/classes/hls/HLS536/hls_attachment_tmp.lwm
+33
-0
hls_journal_import_header.lwm
.../WEB-INF/classes/hls/HLS536/hls_journal_import_header.lwm
+17
-3
hls_journal_import_header_wfl.lwm
...-INF/classes/hls/HLS536/hls_journal_import_header_wfl.lwm
+3
-2
hls_journal_import_reverse_wfl.lwm
...INF/classes/hls/HLS536/hls_journal_import_reverse_wfl.lwm
+2
-2
insert_hls_journal_tmp.lwm
...app/WEB-INF/classes/hls/HLS536/insert_hls_journal_tmp.lwm
+2
-1
batch_attchment_tmp.lsc
src/main/webapp/modules/hls/HLS536/batch_attchment_tmp.lsc
+12
-0
batch_hls_journal_tmp.lsc
src/main/webapp/modules/hls/HLS536/batch_hls_journal_tmp.lsc
+2
-4
hls_journal_attach_trans_upload.lview
.../modules/hls/HLS536/hls_journal_attach_trans_upload.lview
+116
-0
hls_journal_import_entrance.lview
...bapp/modules/hls/HLS536/hls_journal_import_entrance.lview
+126
-20
hls_journal_import_trans_upload.lview
.../modules/hls/HLS536/hls_journal_import_trans_upload.lview
+1
-1
hls_journal_import_upload.lview
...webapp/modules/hls/HLS536/hls_journal_import_upload.lview
+0
-1
hls_journal_import_wfl.lview
...in/webapp/modules/hls/HLS536/hls_journal_import_wfl.lview
+20
-1
hls_journal_other_attach_upload.lview
.../modules/hls/HLS536/hls_journal_other_attach_upload.lview
+33
-0
No files found.
src/main/webapp/WEB-INF/classes/hls/HLS536/excel_system_parameter.lwm
0 → 100644
View file @
0344fd32
<?xml version="1.0" encoding="UTF-8"?>
<bm:model
xmlns:f=
"leaf.database.features"
xmlns:bm=
"http://www.leaf-framework.org/schema/bm"
>
<bm:fields>
<bm:field
name=
"year"
/>
<bm:field
name=
"month"
/>
<bm:field
name=
"base_journal_dir"
/>
</bm:fields>
<bm:operations>
<bm:operation
name=
"query"
>
<bm:query-sql>
<![CDATA[
select sys_parameter_pkg.value('HLS_JOURNAL_DIR') base_journal_dir,
to_char(sysdate,'yyyy') year,
to_char(sysdate,'mm') month
from dual
]]>
</bm:query-sql>
</bm:operation>
</bm:operations>
</bm:model>
src/main/webapp/WEB-INF/classes/hls/HLS536/hls_attachment_tmp.lwm
0 → 100644
View file @
0344fd32
<?xml version="1.0" encoding="UTF-8"?>
<!--
$Author: trd
$Date: 2023-03-21 14:20:22
$Revision: 1.0
$Purpose:
-->
<bm:model
xmlns:bm=
"http://www.leaf-framework.org/schema/bm"
>
<bm:operations>
<bm:operation
name=
"delete"
>
<bm:update-sql>
<![CDATA[
begin
delete from hls_journal_imp_tem ot where ot.session_id = ${/session/@session_id};
end;
]]>
</bm:update-sql>
</bm:operation>
<bm:operation
name=
"insert"
>
<bm:update-sql>
<![CDATA[
BEGIN
INSERT INTO hls_journal_imp_tem
(session_id, journal_header_id)
VALUES
(${/session/@session_id}, ${@journal_header_id});
END;
]]>
</bm:update-sql>
</bm:operation>
<bm:operation
name=
"query"
>
<bm:query-sql>
<![CDATA[
select ot.journal_header_id from hls_journal_imp_tem ot where ot.session_id = ${/session/@session_id}
]]>
</bm:query-sql>
</bm:operation>
</bm:operations>
</bm:model>
src/main/webapp/WEB-INF/classes/hls/HLS536/hls_journal_import_header.lwm
View file @
0344fd32
...
...
@@ -11,6 +11,9 @@
<bm:query-sql>
<![CDATA[
select * from (
select t1.journal_header_id,
t1.batch_id,
t1.batch_number,
t1.reverse_batch_number,
t1.journal_submit_batch_id,
t1.journal_num,
t1.error_message,
...
...
@@ -58,6 +61,9 @@
and t1.journal_type in('COST_IMPORT','GLOBAL_TEMPLATE')
union
select t1.journal_header_id,
t1.batch_id,
t1.batch_number,
t1.reverse_batch_number,
t1.journal_submit_batch_id,
t1.journal_num,
t1.error_message,
...
...
@@ -105,6 +111,9 @@
and t1.journal_type in('FUND_POOL','FINANCIAL_TEMPLATE')
union
select t1.journal_header_id,
t1.batch_id,
t1.batch_number,
t1.reverse_batch_number,
t1.journal_submit_batch_id,
t1.journal_num,
t1.error_message,
...
...
@@ -152,6 +161,9 @@
and t1.journal_type in('GENERAL_SALARIES','BPO_SALARIES')
union
select t1.journal_header_id,
t1.batch_id,
t1.batch_number,
t1.reverse_batch_number,
t1.journal_submit_batch_id,
t1.journal_num,
t1.error_message,
...
...
@@ -206,12 +218,14 @@
</bm:operation>
</bm:operations>
<bm:query-fields>
<bm:query-field
name=
"journal_num"
queryExpression=
"t1.journal_num like ${@journal_num}"
/>
<bm:query-field
name=
"journal_num"
queryExpression=
"t1.journal_num like '%'||${@journal_num}||'%'"
/>
<bm:query-field
name=
"batch_number"
queryExpression=
"t1.batch_number like '%'||${@batch_number}||'%'"
/>
<bm:query-field
name=
"reverse_batch_number"
queryExpression=
"t1.reverse_batch_number like '%'||${@reverse_batch_number}||'%'"
/>
<bm:query-field
name=
"journal_date_from"
queryExpression=
"to_date(t1.journal_date,'yyyy-mm-dd') >= to_date(${@journal_date_from},'yyyy-mm-dd')"
/>
<bm:query-field
name=
"journal_date_to"
queryExpression=
"to_date(t1.journal_date,'yyyy-mm-dd') <= to_date(${@journal_date_to},'yyyy-mm-dd')"
/>
<bm:query-field
name=
"total_amount_dr_from"
datatype=
"java.lang.Double"
queryExpression=
"nvl(t1.total_amount_dr,t1.total_amount_cr) >= ${@total_amount_dr_from}"
/>
<bm:query-field
name=
"total_amount_dr_to"
datatype=
"java.lang.Double"
queryExpression=
"nvl(t1.total_amount_dr,t1.total_amount_cr) <= ${@total_amount_dr_to}"
/>
<bm:query-field
name=
"description"
queryExpression=
"t1.description like
${@description}
"
/>
<bm:query-field
name=
"description"
queryExpression=
"t1.description like
'%'||${@description}||'%'
"
/>
<bm:query-field
name=
"wfl_status"
queryExpression=
"t1.wfl_status=${@wfl_status}"
/>
<bm:query-field
name=
"reverse_wfl_status"
queryExpression=
"t1.reverse_wfl_status=${@reverse_wfl_status}"
/>
</bm:query-fields>
...
...
src/main/webapp/WEB-INF/classes/hls/HLS536/hls_journal_import_header_wfl.lwm
View file @
0344fd32
...
...
@@ -10,6 +10,7 @@
<bm:operation
name=
"query"
>
<bm:query-sql>
<![CDATA[
select t1.journal_header_id,
t1.batch_id,
t1.journal_submit_batch_id,
t1.journal_num,
t1.error_message,
...
...
@@ -59,13 +60,13 @@
</bm:data-filters>
<bm:query-fields>
<bm:query-field
name=
"journal_num"
queryExpression=
"t1.journal_num like
${@journal_num}
"
/>
<bm:query-field
name=
"journal_num"
queryExpression=
"t1.journal_num like
'%'||${@journal_num}||'%'
"
/>
<bm:query-field
name=
"journal_date_from"
queryExpression=
"to_date(t1.journal_date,'yyyy-mm-dd') >= to_date(${@journal_date_from},'yyyy-mm-dd')"
/>
<bm:query-field
name=
"journal_date_to"
queryExpression=
"to_date(t1.journal_date,'yyyy-mm-dd') <= to_date(${@journal_date_to},'yyyy-mm-dd')"
/>
<bm:query-field
name=
"total_amount_dr_from"
datatype=
"java.lang.Double"
queryExpression=
"nvl(t1.total_amount_dr,t1.total_amount_cr) >= ${@total_amount_dr_from}"
/>
<bm:query-field
name=
"total_amount_dr_to"
datatype=
"java.lang.Double"
queryExpression=
"nvl(t1.total_amount_dr,t1.total_amount_cr) <= ${@total_amount_dr_to}"
/>
<bm:query-field
name=
"journal_submit_batch_id"
queryExpression=
"t1.journal_submit_batch_id = ${@journal_submit_batch_id}"
/>
<bm:query-field
name=
"description"
queryExpression=
"t1.description like
${@description}
"
/>
<bm:query-field
name=
"description"
queryExpression=
"t1.description like
'%'||${@description}||'%'
"
/>
<bm:query-field
name=
"wfl_status"
queryExpression=
"t1.wfl_status=${@wfl_status}"
/>
<bm:query-field
name=
"reverse_wfl_status"
queryExpression=
"t1.reverse_wfl_status=${@reverse_wfl_status}"
/>
</bm:query-fields>
...
...
src/main/webapp/WEB-INF/classes/hls/HLS536/hls_journal_import_reverse_wfl.lwm
View file @
0344fd32
...
...
@@ -54,13 +54,13 @@
</bm:operation>
</bm:operations>
<bm:query-fields>
<bm:query-field
name=
"journal_num"
queryExpression=
"t1.journal_num like
${@journal_num}
"
/>
<bm:query-field
name=
"journal_num"
queryExpression=
"t1.journal_num like
'%'||${@journal_num}||'%'
"
/>
<bm:query-field
name=
"journal_date_from"
queryExpression=
"to_date(t1.journal_date,'yyyy-mm-dd') >= to_date(${@journal_date_from},'yyyy-mm-dd')"
/>
<bm:query-field
name=
"journal_date_to"
queryExpression=
"to_date(t1.journal_date,'yyyy-mm-dd') <= to_date(${@journal_date_to},'yyyy-mm-dd')"
/>
<bm:query-field
name=
"total_amount_dr_from"
datatype=
"java.lang.Double"
queryExpression=
"nvl(t1.total_amount_dr,t1.total_amount_cr) >= ${@total_amount_dr_from}"
/>
<bm:query-field
name=
"total_amount_dr_to"
datatype=
"java.lang.Double"
queryExpression=
"nvl(t1.total_amount_dr,t1.total_amount_cr) <= ${@total_amount_dr_to}"
/>
<bm:query-field
name=
"journal_reverse_batch_id"
queryExpression=
"t1.journal_reverse_batch_id = ${@journal_submit_batch_id}"
/>
<bm:query-field
name=
"description"
queryExpression=
"t1.description like
${@description}
"
/>
<bm:query-field
name=
"description"
queryExpression=
"t1.description like
'%'||${@description}||'%'
"
/>
<bm:query-field
name=
"wfl_status"
queryExpression=
"t1.wfl_status=${@wfl_status}"
/>
</bm:query-fields>
</bm:model>
src/main/webapp/WEB-INF/classes/hls/HLS536/insert_hls_journal_tmp.lwm
View file @
0344fd32
...
...
@@ -21,9 +21,10 @@
<bm:operation
name=
"update"
>
<bm:update-sql>
<![CDATA[
BEGIN
hls_journal_import_pkg.init_
journal_atm(p_document_number =>
${@document_number
},
hls_journal_import_pkg.init_
other_journal_atm(p_session_id =>
${/session/@session_id
},
p_file_path =>${@file_path},
p_file_name =>${@file_name},
p_file_type =>${@file_type},
p_file_length =>${@file_length},
p_user_id =>${/session/@user_id});
END;
...
...
src/main/webapp/modules/hls/HLS536/batch_attchment_tmp.lsc
0 → 100644
View file @
0344fd32
<?xml version="1.0" encoding="UTF-8"?>
<a:service
xmlns:a=
"http://www.leaf-framework.org/application"
xmlns:p=
"uncertain.proc"
trace=
"true"
>
<a:init-procedure>
<a:model-delete
model=
"hls.HLS536.hls_attachment_tmp"
trace=
"true"
/>
<a:batch-apply
sourcepath=
"/parameter/details"
>
<a:model-insert
model=
"hls.HLS536.hls_attachment_tmp"
trace=
"true"
/>
</a:batch-apply>
</a:init-procedure>
<a:service-output
output=
"/parameter"
/>
</a:service>
src/main/webapp/modules/hls/HLS536/batch_hls_journal_tmp.lsc
View file @
0344fd32
<?xml version="1.0" encoding="UTF-8"?>
<a:service
xmlns:a=
"http://www.leaf-framework.org/application"
xmlns:p=
"uncertain.proc"
trace=
"true"
>
<a:init-procedure>
<!--lsc文件在日志中打印参数信息-->
<p:echo></p:echo>
<a:model-insert
model=
"hls.HLS536.submit_hls_journal_tmp"
trace=
"true"
/>
<a:batch-apply
sourcepath=
"/parameter/details"
>
<!--只要是 record 里面没有 被 改变 的 数字字段 ,没有 改变还是 数字类型的,但是 改变后 传到 后端是 String 类型 的 了 -->
<a:model-update
model=
"hls.HLS536.submit_hls_journal_tmp"
trace=
"true"
/>
</a:batch-apply>
<a:model-execute
model=
"hls.HLS536.submit_hls_journal_tmp"
trace=
"true"
/>
...
...
src/main/webapp/modules/hls/HLS536/hls_journal_attach_trans_upload.lview
0 → 100644
View file @
0344fd32
<?xml version="1.0" encoding="UTF-8"?>
<a:screen
xmlns:p=
"uncertain.proc"
xmlns:a=
"http://www.leaf-framework.org/application"
xmlns:s=
"leaf.plugin.script"
trace=
"true"
>
<a:init-procedure>
<p:echo/>
<s:server-script>
<![CDATA[
importPackage(java.io);
var request = $ctx['_instance.javax.servlet.http.HttpServletRequest'];
var response = $ctx['_instance.javax.servlet.http.HttpServletResponse'];
try{
data = $bm('hls.HLS536.excel_system_parameter').queryAsMap().getChildren();
var base_dir=data[0].base_journal_dir;
var year=data[0].year;
var month=data[0].month;
var factory = new Packages.org.apache.commons.fileupload.disk.DiskFileItemFactory();
var up = new Packages.org.apache.commons.fileupload.servlet.ServletFileUpload(factory);
var items = up.parseRequest(request);
var i = items.iterator();
while (i.hasNext()) {
var item = i.next();
if (item.isFormField()) {
println("item.getFieldName()"+item.getFieldName() + "=" + item.getString());
} else {
var file_old_name =item.getName();
//println('文件名'+file_old_name);
var file_type_name = item.getName().substr(item.getName().lastIndexOf("."));
var file_type = item.getName().substr(item.getName().lastIndexOf(".")+1);
var guid_file_name_path = $bm('cont.CON500.con_contract_get_guid_file_name').queryAsMap();
var guid_file_name_tables = guid_file_name_path.getChildren();
var file_name=guid_file_name_tables[0].guid_file_name;
var file_path = base_dir+year+"\\"+month+"\\";
var dir=new File(String(file_path));
if(!dir.exists()){
createDir(file_path);
}
var f = item.getStoreLocation();
var input,output;
var tempFile=new File(String(f));
try{
input = new FileInputStream(tempFile);
output = new FileOutputStream(file_path+file_name);
var buf = new java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 1024);
var bytesRead;
while ((bytesRead = input.read(buf)) >
0) {
output.write(buf, 0, bytesRead);
}
input.close();
output.close();
}catch(e){
//删除临时表
$bm('hls.HLS536.hls_attachment_tmp').delete();
println('上传文件出错,请联系管联系管理员理员!e'+e);
if(input!=null){
input.close();
}
if(output!=null){
output.close();
}
raise_app_error('上传文件出错,请联系管理员!');
println('上传文件出错,请联系管理员!e');
}
var file_length=get_file_length(file_path+file_name);
//文件上传成功后进行附件挂载
$bm('hls.HLS536.insert_hls_journal_tmp').update({
"file_path":String(file_path+file_name),
"file_name":file_old_name,
"file_type":file_type,
file_length:file_length
})
//删除临时表
$bm('hls.HLS536.hls_attachment_tmp').delete();
}
}
}catch (e) {
//删除临时表
$bm('hls.HLS536.hls_attachment_tmp').delete();
raise_app_error(e);
}
function createDir(dir){
var file=new File(String(dir));
if(!file.exists()){//如果文件夹不存在
file.mkdirs();//创建文件夹
}
}
//获取文件长度
function get_file_length(path){
var file=new File(String(path));
if (file.exists()
&&
file.isFile()){
//println(f.length());
length=file.length();
return length;
} else{
return 0;
}
}
]]>
</s:server-script>
</a:init-procedure>
<a:view>
<a:link
id=
"hls_journal_entrance_import_link"
url=
"${/request/@context_path}/modules/hls/HLS536/hls_journal_import_entrance.lview"
/>
<script
type=
"text/javascript"
>
<![CDATA[
window.location.href = $('hls_journal_entrance_import_link').getUrl();
]]>
</script>
</a:view>
</a:screen>
src/main/webapp/modules/hls/HLS536/hls_journal_import_entrance.lview
View file @
0344fd32
This diff is collapsed.
Click to expand it.
src/main/webapp/modules/hls/HLS536/hls_journal_import_trans_upload.lview
View file @
0344fd32
...
...
@@ -3,7 +3,7 @@
<a:init-procedure
>
<!--<a:model-execute model="hls.HLS536.delete_hls_journal_tmp"/>-->
<a:model-query
model=
"hls.HLS536.hls_journal_import_head_id"
rootPath=
"header"
/>
<a:import-excel
header_id=
"${/model/header/record/@header_id}"
attribute5=
"D:\u01\hls_journal,fnd_interface_headers,${/model/header/record/@header_id}"
separator=
","
status_field=
"/parameter/@ImportSuccess"
template_code=
"HLS_JOURNAL_IMPORT"
user_id=
"${/session/@user_id}"
/>
<a:import-excel
header_id=
"${/model/header/record/@header_id}"
attribute5=
"D:\u01\hls_
file\hls_
journal,fnd_interface_headers,${/model/header/record/@header_id}"
separator=
","
status_field=
"/parameter/@ImportSuccess"
template_code=
"HLS_JOURNAL_IMPORT"
user_id=
"${/session/@user_id}"
/>
<!--<a:import-excel header_id="${/session/@session_id}" attribute5="D:\u01,fnd_interface_headers,${/session/@session_id}" separator="," status_field="/parameter/@ImportSuccess" template_code="HLS_JOURNAL_IMPORT" user_id="${/session/@user_id}" />-->
<!--<a:model-execute model="hls.HLS536.insert_hls_journal_tmp"/>-->
...
...
src/main/webapp/modules/hls/HLS536/hls_journal_import_upload.lview
View file @
0344fd32
<?xml version="1.0" encoding="UTF-8"?>
<!--<a:screen xmlns:a="http://www.leaf-framework.org/application">-->
<a:screen
xmlns:a=
"http://www.leaf-framework.org/application"
customizationEnabled=
"true"
trace=
"true"
>
<a:init-procedure>
<a:model-query
fetchAll=
"true"
model=
"hls.HLS536.hls_journal_position_query"
rootPath=
"hls536_position_code"
/>
...
...
src/main/webapp/modules/hls/HLS536/hls_journal_import_wfl.lview
View file @
0344fd32
...
...
@@ -60,7 +60,25 @@
}
function open_upload_window(record_id){
var url = $('journal_attachment_uploadFile_id').getUrl() + '?table_name=HLS_JOURNAL_HEADER_IMP
&
header_id=' + record_id;
var url = $('journal_attachment_uploadFile_id').getUrl() + '?table_name=FND_INTERFACE_HEADERS
&
header_id=' + record_id;
var win = new Leaf.Window({
url: url,
title: '${l:HLS.SUPPORTING_DOCUMENT}',
id: 'attachment_uploadFile_id',
width: 850,
height: 400
});
win.on('close', function() {
hls536_journal_query();
});
}
function attachment_upload(val,rec,name){
return '
<a
href=
javascript:open_attachment_upload('+rec.get('journal_header_id')+')
>
其它附件
</a>
';
}
function open_attachment_upload(record_id){
var url = $('journal_attachment_uploadFile_id').getUrl() + '?table_name=HLS_JOURNAL_DETAIL_IMP
&
header_id=' + record_id;
var win = new Leaf.Window({
url: url,
title: '${l:HLS.SUPPORTING_DOCUMENT}',
...
...
@@ -125,6 +143,7 @@
<a:column
name=
"reverse_wfl_status_n"
prompt=
"凭证反冲状态"
width=
"100"
/>
<a:column
name=
"error_message"
prompt=
"错误信息"
width=
"150"
/>
<a:column
name=
"attachment_file"
prompt=
"附件"
width=
"120"
renderer=
"receipt_attachment_upload"
align=
"center"
/>
<a:column
name=
"other_attachment_file"
prompt=
"其它附件"
width=
"120"
renderer=
"attachment_upload"
align=
"center"
/>
</a:columns>
</a:grid>
</a:screenBody>
...
...
src/main/webapp/modules/hls/HLS536/hls_journal_other_attach_upload.lview
0 → 100644
View file @
0344fd32
<?xml version="1.0" encoding="UTF-8"?>
<!--
$Author: trd
$Date: 2023-3-20 下午1:49:19
$Revision: 1.0
$Purpose: 手工凭证其它附件导入
-->
<a:screen
xmlns:a=
"http://www.leaf-framework.org/application"
>
<a:init-procedure/>
<a:view>
<script
type=
"text/javascript"
>
<![CDATA[
function saveClick(){
if (document.getElementById('importFile').value){
var fileName = document.getElementById('importFile').value;
var fileType = fileName.substr(fileName.lastIndexOf("."));
document.getElementById('importForm').submit();
}
}
]]>
</script>
<a:dataSets>
<a:dataSet
id=
"label_ds"
autoCreate=
"true"
>
</a:dataSet>
</a:dataSets>
<a:fieldSet
style=
"margin-left:10px;margin-top:10px;"
title=
"导入文件"
width=
"400"
>
<form
name=
"upload"
id=
"importForm"
action=
"hls_journal_attach_trans_upload.lview?session_id=${/parameter/@session_id}&_csrf=${/session/@_csrf.token}"
enctype=
"multipart/form-data"
method=
"post"
>
<label
style=
"margin-left:10px;margin-top:10px;"
>
<![CDATA[请选择文件:]]>
</label>
<input
name=
"CONTENT"
id=
"importFile"
style=
"margin-bottom:4px;width:160px;height:22px;"
type=
"file"
/>
<input
onclick=
"saveClick()"
style=
"margin-left:50px;margin-top:10px;width:60px;"
type=
"button"
value=
"导入"
/>
</form>
</a:fieldSet>
</a:view>
</a:screen>
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