Commit 1f3ed03e authored by 刘学辉's avatar 刘学辉

Merge remote-tracking branch 'origin/dev' into dev

parents f777ec6b c69aa375
...@@ -38,7 +38,9 @@ function bindEvent(){ ...@@ -38,7 +38,9 @@ function bindEvent(){
}, },
onChange: function (value, data) { onChange: function (value, data) {
$('#pd').val(value.value); $('#pd').val(value.value);
$('#changedPd').val(value.value);
$('#productName').val(value.text); $('#productName').val(value.text);
$('#changedProductName').val(value.text);
} }
}); });
...@@ -83,33 +85,8 @@ function loadGrid() { ...@@ -83,33 +85,8 @@ function loadGrid() {
}); });
gridManager = UICtrl.grid("#maingrid", { gridManager = UICtrl.grid("#maingrid", {
columns: [ columns: [
// {display : "部门",name : "deptName",width : 200,minWidth : 100,type : "string",align : "left",
// editor: { required : true, type: "dynamic",
// getEditor:function (row) {
// var org = "return { type:'tree',data:{name:'org',filter:'ogn',getParam:function(){return {orgRoot:'orgRoot',orgKindId:'ogn'};}},textField:'deptName',valueField:'deptId' }";
// org = (new Function(org))();
// return org;
// }
// }
// },
{ {
display: "部门", name: "deptName", width: 200, minWidth: 60, type: "string", align: "left", display: "部门", name: "deptName", width: 200, minWidth: 60, type: "string", align: "left",
// editor: {
// type: 'tree',
// required: true,
// data: {
// name: 'org',
// filter: 'dpt',
// minWidth: 250,
// getParam:function(){
// return {
// orgRoot: "orgRoot",
// orgKindId: "ogn,dpt"
// }
// },
// },
// textField: 'deptName'
// }
editor: { editor: {
type: 'tree', type: 'tree',
required: true, required: true,
...@@ -117,6 +94,9 @@ function loadGrid() { ...@@ -117,6 +94,9 @@ function loadGrid() {
name: 'org', name: 'org',
filter: 'dpt', filter: 'dpt',
minWidth: 250, minWidth: 250,
param: {
orgRoot: "14636F3F48934EE7811768692A0AC5E1"
}
}, },
textField: 'deptName', textField: 'deptName',
valueField: 'deptId' valueField: 'deptId'
...@@ -133,7 +113,7 @@ function loadGrid() { ...@@ -133,7 +113,7 @@ function loadGrid() {
filter: 'psm', filter: 'psm',
minWidth: 250, minWidth: 250,
param: { param: {
orgRoot: "18FFF477AEEE4609B798015231B400C3" orgRoot: "14636F3F48934EE7811768692A0AC5E1"
} }
}, },
textField: 'executor', textField: 'executor',
...@@ -141,10 +121,17 @@ function loadGrid() { ...@@ -141,10 +121,17 @@ function loadGrid() {
} }
}, },
{ {
display: "签名确认", name: "confirm", width: 140, minWidth: 60, type: "string", align: "left", display: "签名确认", name: "confirmTextView", width: 140, minWidth: 60, type: "string", align: "left",
editor: { editor: {
type: "text" type: 'dictionary',
} data: {name: 'confirm'},
textField: 'confirmTextView',
valueField: 'confirm',
required: false,
render: function (item) {
return item.confirmTextView;
}
},
}, },
{ {
display: "日期", name: "date", width: 200, minWidth: 60, type: "date", align: "left", display: "日期", name: "date", width: 200, minWidth: 60, type: "date", align: "left",
...@@ -190,27 +177,46 @@ function loadStockGrid() { ...@@ -190,27 +177,46 @@ function loadStockGrid() {
stockGridManager = UICtrl.grid("#stockMainGrid", { stockGridManager = UICtrl.grid("#stockMainGrid", {
columns: [ columns: [
{ {
display: "部门", name: "deptName", width: 200, minWidth: 60, type: "string", align: "left", display: "仓库", name: "deptName", width: 200, minWidth: 60, type: "string", align: "left",
editor: { editor: {
type: "text" type: 'tree',
required: true,
data: {
name: 'org',
filter: 'dpt',
minWidth: 250,
param: {
orgRoot: "14636F3F48934EE7811768692A0AC5E1"
}
},
textField: 'deptName',
valueField: 'deptId'
} }
}, },
{ {
display: "专属原材料/半成品/在制品/成品数量(张)", name: "desc", width: 300, minWidth: 60, type: "string", align: "left", display: "专属原材料/半成品/在制品/成品数量(张)", name: "description", width: 300, minWidth: 60, type: "string", align: "left",
editor: { editor: {
type: "text" type: "text"
} }
}, },
{ {
display: "确认人", name: "confirm", width: 140, minWidth: 60, type: "string", align: "left", display: "签名确认", name: "confirmTextView", width: 140, minWidth: 60, type: "string", align: "left",
editor: { editor: {
type: "text" type: 'dictionary',
} data: {name: 'confirm'},
textField: 'confirmTextView',
valueField: 'confirm',
// checkbox:true,
required: false,
render: function (item) {
return item.confirmTextView;
}
},
}, },
{ {
display: "日期", name: "date", width: 200, minWidth: 60, type: "date", align: "left", display: "日期", name: "date", width: 200, minWidth: 60, type: "dateTime", align: "left",
editor: { editor: {
type: "text" type: "dateTime"
} }
} }
], ],
......
...@@ -75,7 +75,8 @@ function loadFinaCustomerPayListGrid() { ...@@ -75,7 +75,8 @@ function loadFinaCustomerPayListGrid() {
// 行号加一 // 行号加一
sequence: (sapFinaCustomerPayGridManager.getData().length + 1)*10, sequence: (sapFinaCustomerPayGridManager.getData().length + 1)*10,
//( "0000000000000000" + num ).substr( -length ) //( "0000000000000000" + num ).substr( -length )
zuawa: "000" + (sapFinaCustomerPayGridManager.getData().length + 1) zuawa: "001",
zuawaName: "过账日期",
} }
); );
}, },
...@@ -132,10 +133,22 @@ function loadFinaCustomerPayListGrid() { ...@@ -132,10 +133,22 @@ function loadFinaCustomerPayListGrid() {
}, },
}, },
{ {
display: "根据分配号排序代码", name: "zuawa", width: 150, minWidth: 60, type: "String", align: "left", display: "根据分配号排序代码", name: "zuawaName", width: 150, minWidth: 60, type: "String", align: "left",
// render:function (item){ editor: {
// return item.sequence; required: true, type: "select",
// } data: {
type: 'system',
name: "dictionary",
getParam: function (item) {
return {fieldName: "ZUAWA"}
},
back: {
ZUAWA: "zuawa",
TTEXT: "zuawaName"
},
},
}
}, },
{ {
display: "付款条件", name: "ztermTextView", width: 100, minWidth: 60, type: "String", align: "left", display: "付款条件", name: "ztermTextView", width: 100, minWidth: 60, type: "String", align: "left",
...@@ -316,6 +329,12 @@ function getExtendedData(processAction) { ...@@ -316,6 +329,12 @@ function getExtendedData(processAction) {
//不验证 //不验证
$('#submitForm').attr('check', false); $('#submitForm').attr('check', false);
} }
var stenr = $("#stenr").val();
var taxTypeName = $("#taxTypeName").val();
if (Public.isNotBlank(stenr) && Public.isBlank(taxTypeName)){
Public.tip("税号必须要有对应的税号类型");
return false;
}
const isAllData = $('#oldId') || !getId(); const isAllData = $('#oldId') || !getId();
var extendedData = {}; var extendedData = {};
var _grid = UICtrl.getGridManager('#sapFinaCustomerPayGrid'); var _grid = UICtrl.getGridManager('#sapFinaCustomerPayGrid');
...@@ -410,15 +429,32 @@ function bindEvent(){ ...@@ -410,15 +429,32 @@ function bindEvent(){
$('#regionName').val(data.BEZEI); $('#regionName').val(data.BEZEI);
} }
}); });
// $('#lifnr').searchbox({
// type: "suppliers", name: "selectSuppliers", $('#taxTypeName').searchbox({
// getParam: function (item) { type: "system", name: "dictionary",
// }, getParam: function (item) {
// onChange: function (value, data) { return {
// $('#lifnr').val(data.partner); fieldName: "TTYPE",
// $('#name1').val(data.nameOrg1); }
// } },
// }); onChange: function (value, data) {
$("#taxType").val(data.TAXTYPE);
$("#taxTypeName").val(data.TEXT);
}
});
$('input[name="stenr"]').mouseout(function () {
let val = $(this).val()
if (Public.isNotBlank(val)){
UICtrl.setElHideOrShow("#taxTypeName",false)
UICtrl.setElRequiredFlag("#taxTypeName",true)
}else {
UICtrl.setElHideOrShow("#taxTypeName",true)
UICtrl.setElRequiredFlag("#taxTypeName",false)
$("#taxTypeName").val("");
$("#taxType").val("");
}
})
} }
......
...@@ -74,6 +74,8 @@ ...@@ -74,6 +74,8 @@
<div class="hg-form-row"> <div class="hg-form-row">
<x:inputC name="lifnr" label="供应商" labelCol="1" fieldCol="2" maxLength="30"/> <x:inputC name="lifnr" label="供应商" labelCol="1" fieldCol="2" maxLength="30"/>
<x:inputC name="stenr" label="税号" labelCol="1" fieldCol="2" maxLength="30"/> <x:inputC name="stenr" label="税号" labelCol="1" fieldCol="2" maxLength="30"/>
<x:hidden name="taxType"/>
<x:inputC name="taxTypeName" label="税号类型" labelCol="1" fieldCol="2" maxLength="30" wrapper="select"/>
<x:selectC name="sperr" label="中心记帐冻结" labelCol="1" fieldCol="2" dictionary="sperr"/> <x:selectC name="sperr" label="中心记帐冻结" labelCol="1" fieldCol="2" dictionary="sperr"/>
</div> </div>
<div class="hg-form-row"> <div class="hg-form-row">
......
...@@ -65,7 +65,9 @@ function loadFinaCustomerPayListGrid() { ...@@ -65,7 +65,9 @@ function loadFinaCustomerPayListGrid() {
UICtrl.addGridRow(sapFinaCustomerPayGridManager, UICtrl.addGridRow(sapFinaCustomerPayGridManager,
{ {
// 行号加一 // 行号加一
sequence: (sapFinaCustomerPayGridManager.getData().length + 1)*10 sequence: (sapFinaCustomerPayGridManager.getData().length + 1)*10,
zuawa: "001",
zuawaName: "过账日期",
} }
); );
}, },
...@@ -122,8 +124,20 @@ function loadFinaCustomerPayListGrid() { ...@@ -122,8 +124,20 @@ function loadFinaCustomerPayListGrid() {
}, },
{ {
display: "根据分配号排序代码", name: "zuawa", width: 150, minWidth: 60, type: "String", align: "left", display: "根据分配号排序代码", name: "zuawa", width: 150, minWidth: 60, type: "String", align: "left",
render:function (item){ editor: {
return item.sequence; required: true, type: "select",
data: {
type: 'system',
name: "dictionary",
getParam: function (item) {
return {fieldName: "ZUAWA"}
},
back: {
ZUAWA: "zuawa",
TTEXT: "zuawaName"
},
},
} }
}, },
{ {
...@@ -315,6 +329,12 @@ function getExtendedData(processAction) { ...@@ -315,6 +329,12 @@ function getExtendedData(processAction) {
//不验证 //不验证
$('#submitForm').attr('check', false); $('#submitForm').attr('check', false);
} }
var stenr = $("#stenr").val();
var taxTypeName = $("#taxTypeName").val();
if (Public.isNotBlank(stenr) && Public.isBlank(taxTypeName)){
Public.tip("税号必须要有对应的税号类型");
return false;
}
const isAllData = $('#oldId') || !getId(); const isAllData = $('#oldId') || !getId();
var extendedData = {}; var extendedData = {};
var pay_grid = UICtrl.getGridManager('#sapFinaCustomerPayGrid'); var pay_grid = UICtrl.getGridManager('#sapFinaCustomerPayGrid');
...@@ -373,6 +393,31 @@ function bindEvent(){ ...@@ -373,6 +393,31 @@ function bindEvent(){
$('#regionName').val(data.BEZEI); $('#regionName').val(data.BEZEI);
} }
}); });
$('#taxTypeName').searchbox({
type: "system", name: "dictionary",
getParam: function (item) {
return {
fieldName: "TTYPE",
}
},
onChange: function (value, data) {
$("#taxType").val(data.TAXTYPE);
$("#taxTypeName").val(data.TEXT);
}
});
$('input[name="stenr"]').mouseout(function () {
let val = $(this).val()
if (Public.isNotBlank(val)){
UICtrl.setElHideOrShow("#taxTypeName",false)
UICtrl.setElRequiredFlag("#taxTypeName",true)
}else {
UICtrl.setElHideOrShow("#taxTypeName",true)
UICtrl.setElRequiredFlag("#taxTypeName",false)
$("#taxTypeName").val("");
$("#taxType").val("");
}
})
} }
function reloadGrid() { function reloadGrid() {
......
...@@ -15,54 +15,63 @@ ...@@ -15,54 +15,63 @@
<x:hidden name="id"/> <x:hidden name="id"/>
<x:hidden name="sId"/> <x:hidden name="sId"/>
<x:hidden name="applyType"/> <x:hidden name="applyType"/>
<x:hidden name="billCode"/> <%-- <x:hidden name="billCode"/>--%>
<x:hidden name="fillinDate" type="datetime"/> <%-- <x:hidden name="fillinDate" type="datetime"/>--%>
<x:hidden name="fullId"/> <x:hidden name="fullId"/>
<x:hidden name="organId"/> <x:hidden name="organId"/>
<x:hidden name="organName"/> <x:hidden name="organName"/>
<x:hidden name="deptId"/> <x:hidden name="deptId"/>
<x:hidden name="deptName"/> <%-- <x:hidden name="deptName"/>--%>
<x:hidden name="positionId"/> <x:hidden name="positionId"/>
<x:hidden name="positionName"/> <x:hidden name="positionName"/>
<x:hidden name="personMemberId"/> <x:hidden name="personMemberId"/>
<x:hidden name="statusId"/> <x:hidden name="statusId"/>
<x:hidden name="personMemberName"/> <%-- <x:hidden name="personMemberName"/>--%>
<x:title title="申请人填写区域" name="group"/>
<div class="hg-form-cols">
<div class="hg-form-row">
<x:inputC name="billCode" label="申请单编号" labelCol="1" readonly="true" fieldCol="2"/>
<x:inputC name="personMemberName" label="申请人" readonly="true" labelCol="1" fieldCol="2"/>
<x:inputC name="deptName" label="申请部门" readonly="true" labelCol="1" fieldCol="2"/>
<x:inputC name="fillinDate" label="申请日期" readonly="true" wrapper="dateTime" labelCol="1" fieldCol="2"/>
</div>
</div>
<x:title title="财务客户主基本数据" name="group"/> <x:title title="财务客户主基本数据" name="group"/>
<div class="hg-form-cols"> <div class="hg-form-cols">
<div class="hg-form-cols"> <div class="hg-form-row">
<div class="hg-form-row"> <x:inputC name="buPartner" label="业务伙伴编码" labelCol="1" fieldCol="2" readonly="true"/>
<x:inputC name="buPartner" label="业务伙伴编码" labelCol="1" fieldCol="2" readonly="true"/> <x:inputC name="creationGroup" label="业务伙伴分组" labelCol="1" fieldCol="2" readonly="true"/>
<x:inputC name="creationGroup" label="业务伙伴分组" labelCol="1" fieldCol="2" readonly="true"/> <x:inputC name="partnerRole" label="业务伙伴角色" labelCol="1" fieldCol="2" required="false" readonly="true"/>
<x:inputC name="partnerRole" label="业务伙伴角色" labelCol="1" fieldCol="2" required="false" readonly="true"/> <x:selectC name="titleMedi" label="称谓代码" labelCol="1" fieldCol="2" dictionary="title" disabled="true"/>
<x:selectC name="titleMedi" label="称谓代码" labelCol="1" fieldCol="2" dictionary="title" disabled="true"/> </div>
</div> <div class="hg-form-row">
<div class="hg-form-row"> <x:inputC name="nameOrg1" label="财务客户名称1" labelCol="1" fieldCol="2" required="true" readonly="true"/>
<x:inputC name="nameOrg1" label="财务客户名称1" labelCol="1" fieldCol="2" required="true" readonly="true"/> <x:inputC name="buSort1Txt" label="搜索词1" labelCol="1" fieldCol="2" required="true" readonly="true"/>
<x:inputC name="buSort1Txt" label="搜索词1" labelCol="1" fieldCol="2" required="true" readonly="true"/> <x:selectC name="langu" label="语言" labelCol="1" fieldCol="2" required="true" dictionary="langu" disabled="true"/>
<x:selectC name="langu" label="语言" labelCol="1" fieldCol="2" required="true" dictionary="langu" disabled="true"/> </div>
<x:selectC name="sperr" label="中心记帐冻结" labelCol="1" fieldCol="2" dictionary="sperr" disabled="true"/> <div class="hg-form-row">
</div> <x:inputC name="countryName" label="国家" labelCol="1" fieldCol="2" required="true" wrapper="select" disabled="true"/>
<div class="hg-form-row"> <x:hidden name="country"/>
<x:inputC name="countryName" label="国家" labelCol="1" fieldCol="2" required="true" wrapper="select" disabled="true"/> <x:inputC name="regionName" label="地区" labelCol="1" fieldCol="2" required="false" wrapper="select" disabled="true"/>
<x:hidden name="country"/> <x:hidden name="region"/>
<x:inputC name="regionName" label="地区" labelCol="1" fieldCol="2" required="false" wrapper="select" disabled="true"/> <x:inputC name="street" label="街道" labelCol="1" fieldCol="2" maxLength="35" readonly="true"/>
<x:hidden name="region"/> <x:inputC name="postCode1" label="城市邮政编码" labelCol="1" fieldCol="2" required="false" maxLength="6" readonly="true"/>
<x:inputC name="street" label="街道" labelCol="1" fieldCol="2" maxLength="35" readonly="true"/> </div>
<x:inputC name="postCode1" label="城市邮政编码" labelCol="1" fieldCol="2" required="false" maxLength="6" readonly="true"/> <div class="hg-form-row">
</div> <x:inputC name="smtpAddr" label="电子邮件地址" labelCol="1" fieldCol="2" maxLength="30" readonly="true"/>
<div class="hg-form-row"> <x:inputC name="telNumber" label="电话" labelCol="1" fieldCol="2" readonly="true"/>
<x:inputC name="smtpAddr" label="电子邮件地址" labelCol="1" fieldCol="2" maxLength="30" readonly="true"/> <x:inputC name="mobNumber" label="移动电话" labelCol="1" fieldCol="2" readonly="true"/>
<x:inputC name="telNumber" label="电话" labelCol="1" fieldCol="2" readonly="true"/> <x:inputC name="faxNumber" label="传真" labelCol="1" fieldCol="2" maxLength="30" readonly="true"/>
<x:inputC name="mobNumber" label="移动电话" labelCol="1" fieldCol="2" readonly="true"/> </div>
<x:inputC name="faxNumber" label="传真" labelCol="1" fieldCol="2" maxLength="30" readonly="true"/> <div class="hg-form-row">
</div> <x:inputC name="lifnr" label="供应商" labelCol="1" fieldCol="2" maxLength="30" readonly="true"/>
<div class="hg-form-row"> <x:inputC name="stenr" label="税号" labelCol="1" fieldCol="2" maxLength="30" readonly="true"/>
<x:inputC name="lifnr" label="供应商" labelCol="1" fieldCol="2" maxLength="30" readonly="true"/> <x:hidden name="taxType"/>
<x:inputC name="stenr" label="税号" labelCol="1" fieldCol="2" maxLength="30" readonly="true"/> <x:inputC name="taxTypeName" label="税号类型" labelCol="1" fieldCol="2" maxLength="30" wrapper="select" readonly="true"/>
</div> <x:selectC name="sperr" label="中心记帐冻结" labelCol="1" fieldCol="2" dictionary="sperr" disabled="true"/>
<div class="hg-form-row"> </div>
<x:textareaC name="zbz01" label="备注" labelCol="1" fieldCol="11" rows="3" readonly="true"/> <div class="hg-form-row">
</div> <x:textareaC name="zbz01" label="备注" labelCol="1" fieldCol="11" rows="3" readonly="true"/>
</div> </div>
</div> </div>
<div style="padding-top: 15px;"> <div style="padding-top: 15px;">
......
...@@ -42,7 +42,7 @@ ...@@ -42,7 +42,7 @@
<x:inputC name="matklName" label="物料组" labelCol="1" fieldCol="2" wrapper="select" /> <x:inputC name="matklName" label="物料组" labelCol="1" fieldCol="2" wrapper="select" />
<x:selectC name="waers" label="货币码" labelCol="1" fieldCol="2" required="true" dictionary="waers"/> <x:selectC name="waers" label="货币码" labelCol="1" fieldCol="2" required="true" dictionary="waers"/>
<x:inputC name="peinh" label="价格单位" labelCol="1" fieldCol="2" required="true" /> <x:inputC name="peinh" label="价格单位" labelCol="1" fieldCol="2" required="true" mask="9999999"/>
<x:hidden name="bprme"/> <x:hidden name="bprme"/>
<x:inputC name="bprmeName" label="订单价格单位(采购)" labelCol="2" fieldCol="2" wrapper="select" required="true" /> <x:inputC name="bprmeName" label="订单价格单位(采购)" labelCol="2" fieldCol="2" wrapper="select" required="true" />
......
package com.huigou.topsun.ep.change.application; package com.huigou.topsun.ep.change.application;
import com.huigou.topsun.ep.change.domain.EpChangeFormImplItem; import com.huigou.topsun.ep.change.domain.EpChangeFormImplItem;
import com.huigou.topsun.ep.change.domain.query.EpChangeFormQueryRequest;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @Auther: xin.lu * @Auther: xin.lu
...@@ -10,7 +12,8 @@ import java.util.List; ...@@ -10,7 +12,8 @@ import java.util.List;
* @Description: * @Description:
*/ */
public interface EpChangeFormImplItemApplication { public interface EpChangeFormImplItemApplication {
List<EpChangeFormImplItem> findByEpChangeFormId(String epChangeFormId); public static final String QUERY_XML_FILE_PATH = "config/topsun/ep/change/epChangeForm.xml";
Map<String,Object> findByEpChangeFormId(EpChangeFormQueryRequest queryRequest);
void saveEpChangeFormImplItems(String epChangeFormId,List<EpChangeFormImplItem> items); void saveEpChangeFormImplItems(String epChangeFormId,List<EpChangeFormImplItem> items);
......
package com.huigou.topsun.ep.change.application; package com.huigou.topsun.ep.change.application;
import com.huigou.topsun.ep.change.domain.EpChangeFormStockItem; import com.huigou.topsun.ep.change.domain.EpChangeFormStockItem;
import com.huigou.topsun.ep.change.domain.query.EpChangeFormQueryRequest;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @Auther: xin.lu * @Auther: xin.lu
...@@ -10,7 +12,8 @@ import java.util.List; ...@@ -10,7 +12,8 @@ import java.util.List;
* @Description: * @Description:
*/ */
public interface EpChangeFormStockItemApplication { public interface EpChangeFormStockItemApplication {
List<EpChangeFormStockItem> findByEpChangeFormId(String epChangeFormId); public static final String QUERY_XML_FILE_PATH = "config/topsun/ep/change/epChangeForm.xml";
Map<String,Object> findByEpChangeFormId(EpChangeFormQueryRequest queryRequest);
void saveEpChangeFormStockItems(String epChangeFormId,List<EpChangeFormStockItem> epChangeFormStockItems); void saveEpChangeFormStockItems(String epChangeFormId,List<EpChangeFormStockItem> epChangeFormStockItems);
......
package com.huigou.topsun.ep.change.application.impl; package com.huigou.topsun.ep.change.application.impl;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.huigou.data.domain.model.CommonDomainConstants; import com.huigou.data.domain.model.CommonDomainConstants;
...@@ -12,14 +13,17 @@ import com.huigou.topsun.ep.change.domain.EpChangeForm; ...@@ -12,14 +13,17 @@ import com.huigou.topsun.ep.change.domain.EpChangeForm;
import com.huigou.topsun.ep.change.domain.EpChangeFormImplItem; import com.huigou.topsun.ep.change.domain.EpChangeFormImplItem;
import com.huigou.topsun.ep.change.domain.EpChangeFormStockItem; import com.huigou.topsun.ep.change.domain.EpChangeFormStockItem;
import com.huigou.topsun.ep.change.domain.query.EpChangeFormQueryRequest; import com.huigou.topsun.ep.change.domain.query.EpChangeFormQueryRequest;
import com.huigou.topsun.ep.change.repository.EpChangeFormImplItemRepository;
import com.huigou.topsun.ep.change.repository.EpChangeFormRepository; import com.huigou.topsun.ep.change.repository.EpChangeFormRepository;
import com.huigou.topsun.ep.order.domain.EpSaleOrder; import com.huigou.topsun.ep.change.repository.EpChangeFormStockItemRepository;
import com.huigou.topsun.ep.order.domain.EpSaleOrderItem;
import com.huigou.topsun.sap.common.HttpClient; import com.huigou.topsun.sap.common.HttpClient;
import com.huigou.topsun.sap.common.application.SapMutualEpLogApplication; import com.huigou.topsun.sap.common.application.SapMutualEpLogApplication;
import com.huigou.topsun.sap.common.domain.EpResult; import com.huigou.topsun.sap.common.domain.EpResult;
import com.huigou.uasp.bmp.common.BizBillStatus; import com.huigou.uasp.bmp.common.BizBillStatus;
import com.huigou.uasp.bmp.opm.domain.model.org.Org;
import com.huigou.uasp.bpm.FlowBroker; import com.huigou.uasp.bpm.FlowBroker;
import com.huigou.uasp.bpm.engine.domain.model.ProcUnitHandler;
import com.huigou.uasp.bpm.engine.domain.model.TaskExtension;
import com.huigou.util.ClassHelper; import com.huigou.util.ClassHelper;
import org.activiti.engine.delegate.DelegateExecution; import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.DelegateTask;
...@@ -48,6 +52,10 @@ public class EpChangeFormApplicationImpl extends FlowBroker implements EpChangeF ...@@ -48,6 +52,10 @@ public class EpChangeFormApplicationImpl extends FlowBroker implements EpChangeF
private HttpClient httpClient; private HttpClient httpClient;
@Autowired @Autowired
SapMutualEpLogApplication sapMutualEpLogApplication; SapMutualEpLogApplication sapMutualEpLogApplication;
@Autowired
private EpChangeFormImplItemRepository epChangeFormImplItemRepository;
@Autowired
private EpChangeFormStockItemRepository epChangeFormStockItemRepository;
@Override @Override
protected String saveBizAndApprovalData() { protected String saveBizAndApprovalData() {
super.saveBizAndApprovalData(); super.saveBizAndApprovalData();
...@@ -92,6 +100,40 @@ public class EpChangeFormApplicationImpl extends FlowBroker implements EpChangeF ...@@ -92,6 +100,40 @@ public class EpChangeFormApplicationImpl extends FlowBroker implements EpChangeF
if (this.isApplyProcUnit(delegateTask) && this.getApprovalParameter().isAdvanceProcessAction()) { if (this.isApplyProcUnit(delegateTask) && this.getApprovalParameter().isAdvanceProcessAction()) {
updateStatus(bizId, BizBillStatus.APPROVING); updateStatus(bizId, BizBillStatus.APPROVING);
} }
if (this.isApprovalProcUnit(delegateTask) && this.getApprovalParameter().isAdvanceProcessAction()){
TaskExtension te = actApplication.loadRuntimeTaskExtension(delegateTask.getId());
cn.hutool.core.lang.Assert.notNull(te, String.format("未查询到流程任务【%s】的扩展信息", delegateTask.getId()));
// 获取流程任务对应的审批环节信息
ProcUnitHandler procUnitHandler = procUnitHandlerApplication.loadProcUnitHandler(te.getProcUnitHandlerId());
String subProcUnitId = procUnitHandler.getSubProcUnitId();
//查询到审批人组织信息
String fullId = delegateTask.getAssignee();
Org org = orgApplication.loadOrgByFullId(fullId);
if (ObjectUtil.isNotNull(org)){
if ("executor".equals(subProcUnitId)){
//匹配部门执行人审批完,更新确认状态是时间
List<EpChangeFormImplItem> formImplItemList = epChangeFormImplItemRepository.findByEpChangeFormId(bizId);
for (EpChangeFormImplItem epChangeFormImplItem : formImplItemList) {
if (org.getId().equals(epChangeFormImplItem.getExecutorId())){
epChangeFormImplItem.setConfirm("1");
epChangeFormImplItem.setDate(new Date());
}
}
changeFormImplItemApplication.saveEpChangeFormImplItems(bizId,formImplItemList);
}
if ("store".equals(subProcUnitId)){
//匹配仓库环节审批完,更新确认状态是时间
List<EpChangeFormStockItem> stockItemList = epChangeFormStockItemRepository.findByEpChangeFormId(bizId);
for (EpChangeFormStockItem epChangeFormStockItem : stockItemList) {
if (org.getDeptId().equals(epChangeFormStockItem.getDeptId())){
epChangeFormStockItem.setConfirm("1");
epChangeFormStockItem.setDate(new Date());
}
}
changeFormStockItemApplication.saveEpChangeFormStockItems(bizId,stockItemList);
}
}
}
} }
/** /**
......
package com.huigou.topsun.ep.change.application.impl; package com.huigou.topsun.ep.change.application.impl;
import com.huigou.cache.DictUtil;
import com.huigou.data.query.model.QueryDescriptor;
import com.huigou.data.query.model.QueryModel;
import com.huigou.topsun.ep.change.application.EpChangeFormImplItemApplication; import com.huigou.topsun.ep.change.application.EpChangeFormImplItemApplication;
import com.huigou.topsun.ep.change.domain.EpChangeFormImplItem; import com.huigou.topsun.ep.change.domain.EpChangeFormImplItem;
import com.huigou.topsun.ep.change.domain.query.EpChangeFormQueryRequest;
import com.huigou.topsun.ep.change.repository.EpChangeFormImplItemRepository; import com.huigou.topsun.ep.change.repository.EpChangeFormImplItemRepository;
import com.huigou.uasp.bmp.common.application.BaseApplication; import com.huigou.uasp.bmp.common.application.BaseApplication;
import com.huigou.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @Auther: xin.lu * @Auther: xin.lu
...@@ -19,8 +26,15 @@ public class EpChangeFormImplItemApplicationImpl extends BaseApplication impleme ...@@ -19,8 +26,15 @@ public class EpChangeFormImplItemApplicationImpl extends BaseApplication impleme
@Autowired @Autowired
private EpChangeFormImplItemRepository changeFormImplItemRepository; private EpChangeFormImplItemRepository changeFormImplItemRepository;
@Override @Override
public List<EpChangeFormImplItem> findByEpChangeFormId(String epChangeFormId) { public Map<String,Object> findByEpChangeFormId(EpChangeFormQueryRequest queryRequest) {
return changeFormImplItemRepository.findByEpChangeFormId(epChangeFormId); Map<String,Object> map = new HashMap<>();
if (StringUtil.isNotBlank(queryRequest.getEpChangeFormId())){
QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(QUERY_XML_FILE_PATH, "epChangeFormImplItem");
QueryModel queryModel = this.sqlExecutorDao.getQueryModel(queryDescriptor, queryRequest);
queryModel.putDictionary("confirm", DictUtil.getDictionary("confirm"));
map = this.sqlExecutorDao.executeSlicedQuery(queryModel);
}
return map;
} }
@Override @Override
......
package com.huigou.topsun.ep.change.application.impl; package com.huigou.topsun.ep.change.application.impl;
import com.huigou.cache.DictUtil;
import com.huigou.data.query.model.QueryDescriptor;
import com.huigou.data.query.model.QueryModel;
import com.huigou.topsun.ep.change.application.EpChangeFormStockItemApplication; import com.huigou.topsun.ep.change.application.EpChangeFormStockItemApplication;
import com.huigou.topsun.ep.change.domain.EpChangeFormStockItem; import com.huigou.topsun.ep.change.domain.EpChangeFormStockItem;
import com.huigou.topsun.ep.change.domain.query.EpChangeFormQueryRequest;
import com.huigou.topsun.ep.change.repository.EpChangeFormStockItemRepository; import com.huigou.topsun.ep.change.repository.EpChangeFormStockItemRepository;
import com.huigou.uasp.bmp.common.BizBillStatus;
import com.huigou.uasp.bmp.common.application.BaseApplication; import com.huigou.uasp.bmp.common.application.BaseApplication;
import com.huigou.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @Auther: xin.lu * @Auther: xin.lu
...@@ -19,8 +27,15 @@ public class EpChangeFormStockItemApplicationImpl extends BaseApplication implem ...@@ -19,8 +27,15 @@ public class EpChangeFormStockItemApplicationImpl extends BaseApplication implem
@Autowired @Autowired
private EpChangeFormStockItemRepository changeFormStockItemRepository; private EpChangeFormStockItemRepository changeFormStockItemRepository;
@Override @Override
public List<EpChangeFormStockItem> findByEpChangeFormId(String epChangeFormId) { public Map<String,Object> findByEpChangeFormId(EpChangeFormQueryRequest queryRequest) {
return changeFormStockItemRepository.findByEpChangeFormId(epChangeFormId); Map<String,Object> map = new HashMap<>();
if (StringUtil.isNotBlank(queryRequest.getEpChangeFormId())){
QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(QUERY_XML_FILE_PATH, "epChangeFormStockItem");
QueryModel queryModel = this.sqlExecutorDao.getQueryModel(queryDescriptor, queryRequest);
queryModel.putDictionary("confirm", DictUtil.getDictionary("confirm"));
map = this.sqlExecutorDao.executeSlicedQuery(queryModel);
}
return map;
} }
@Override @Override
......
...@@ -72,14 +72,15 @@ public class EpChangeFormController extends CommonController { ...@@ -72,14 +72,15 @@ public class EpChangeFormController extends CommonController {
public String slicedEpChangeFormImplItems(){ public String slicedEpChangeFormImplItems(){
SDO sdo = this.getSDO(); SDO sdo = this.getSDO();
String epChangeFormId = sdo.getString("epChangeFormId"); EpChangeFormQueryRequest queryRequest = sdo.toQueryRequest(EpChangeFormQueryRequest.class);
return packGridDataAndResult(changeFormImplItemApplication.findByEpChangeFormId(epChangeFormId)); return toResult(changeFormImplItemApplication.findByEpChangeFormId(queryRequest));
} }
public String slicedEpChangeFormStockItems(){ public String slicedEpChangeFormStockItems(){
SDO sdo = this.getSDO(); SDO sdo = this.getSDO();
String epChangeFormId = sdo.getString("epChangeFormId"); EpChangeFormQueryRequest queryRequest = sdo.toQueryRequest(EpChangeFormQueryRequest.class);
return packGridDataAndResult(changeFormStockItemApplication.findByEpChangeFormId(epChangeFormId)); //String epChangeFormId = sdo.getString("epChangeFormId");
return toResult(changeFormStockItemApplication.findByEpChangeFormId(queryRequest));
} }
public String deleteEpChangeFormImplItem(){ public String deleteEpChangeFormImplItem(){
......
...@@ -19,6 +19,12 @@ import java.util.Date; ...@@ -19,6 +19,12 @@ import java.util.Date;
public class EpChangeFormImplItem extends AbstractEntity { public class EpChangeFormImplItem extends AbstractEntity {
@Column(name = "ep_change_form_id") @Column(name = "ep_change_form_id")
private String epChangeFormId; private String epChangeFormId;
/**
* 部门
*/
@Column(name = "dept_id")
private String deptId;
/** /**
* 部门 * 部门
*/ */
...@@ -31,6 +37,12 @@ public class EpChangeFormImplItem extends AbstractEntity { ...@@ -31,6 +37,12 @@ public class EpChangeFormImplItem extends AbstractEntity {
@Column(name = "executor") @Column(name = "executor")
private String executor; private String executor;
/**
* 执行人
*/
@Column(name = "executor_id")
private String executorId;
/** /**
* 签名确认 * 签名确认
*/ */
......
...@@ -25,11 +25,17 @@ public class EpChangeFormStockItem extends AbstractEntity { ...@@ -25,11 +25,17 @@ public class EpChangeFormStockItem extends AbstractEntity {
@Column(name = "dept_name") @Column(name = "dept_name")
private String deptName; private String deptName;
/**
* 部门
*/
@Column(name = "dept_id")
private String deptId;
/** /**
* 专属原材料/半成品/在制品/成品数量(张) * 专属原材料/半成品/在制品/成品数量(张)
*/ */
@Column(name = "desc") @Column(name = "description")
private String desc; private String description;
/** /**
* 确认人 * 确认人
......
...@@ -11,4 +11,5 @@ import lombok.Data; ...@@ -11,4 +11,5 @@ import lombok.Data;
@Data @Data
public class EpChangeFormQueryRequest extends QueryAbstractRequest { public class EpChangeFormQueryRequest extends QueryAbstractRequest {
private String billCode; private String billCode;
private String epChangeFormId;
} }
...@@ -259,100 +259,6 @@ public class FinaCustomerApplicationImpl extends FlowBroker implements FinaCusto ...@@ -259,100 +259,6 @@ public class FinaCustomerApplicationImpl extends FlowBroker implements FinaCusto
/** /**
* 远程调用sap接口,传递数据 * 远程调用sap接口,传递数据
*/ */
// public void sendSapData(FinaCustomerInfo finaCustomer, List<FinaCustomerPay> payList, List<FinaCustomerBank> bankList) {
// FinaCustomerInfoVo finaCustomerVo = new FinaCustomerInfoVo();
// BeanUtil.copyProperties(finaCustomer, finaCustomerVo);
// finaCustomerVo.setKtokk(finaCustomerVo.getPartnerRole());
// finaCustomerVo.setUpdkz("I");
// if (finaCustomer.getApplyType().equals("1")) { //更新
// finaCustomerVo.setUpdkz("U");
// }
// if (finaCustomer.getApplyType().equals("-1")) { //删除
// finaCustomerVo.setUpdkz("D");
// }
// if (finaCustomer.getApplyType().equals("2")) { //扩展
// finaCustomerVo.setUpdkz("U");
// List<FinaCustomerPay> otherPayList = this.getOtherPayList(finaCustomer.getBuPartner());
// payList.addAll(otherPayList);
// List<FinaCustomerBank> otherBankList = this.getOtherBankList(finaCustomer.getBuPartner());
// bankList.addAll(otherBankList);
// }
// if ("0".equals(finaCustomerVo.getSperr())){
// finaCustomerVo.setSperr("");
// }
// if ("0".equals(finaCustomerVo.getSperm())){
// finaCustomerVo.setSperm("");
// }
// List<FinaCustomerPayVo> payVoList = new ArrayList<>();
// for (FinaCustomerPay finaCustomerPay : payList) {
// FinaCustomerPayVo payVo = new FinaCustomerPayVo();
// ClassHelper.copyProperties(finaCustomerPay, payVo);
// if ("0".equals(payVo.getSperrB())){
// payVo.setSperrB("");
// }
// payVoList.add(payVo);
// }
// finaCustomerVo.setFinaCustomerPayVoList(payVoList);
// List<FinaCustomerBankVo> bankVoList = new ArrayList<>();
// for (FinaCustomerBank finaCustomerBank : bankList) {
// FinaCustomerBankVo bankVo = new FinaCustomerBankVo();
// ClassHelper.copyProperties(finaCustomerBank, bankVo);
// //银行账户,BPM不处理,SAP处理
//// if (bankVo.getBankn().length() > 18){
//// String bankn = bankVo.getBankn();
//// bankVo.setBankn(bankn.substring(0,18));
//// //账户明细放18位后的值
//// bankVo.setBkref(bankn.substring(18,bankn.length()));
//// }
// //财务机构名称赋值组织名称1
// bankVo.setBanka(finaCustomerVo.getNameOrg1());
// bankVoList.add(bankVo);
// }
// finaCustomerVo.setFinaCustomerBankVoList(bankVoList);
// ObjectMapper objectMapper = new ObjectMapper();
// String url = "CUD_SUPPLY/SUPPLY_DATA";
// Map<String, Object> resultMap = new HashMap<>();
// resultMap.put("businessType", "财务客户主数据");
// resultMap.put("businessId", finaCustomer.getId());
// List<FinaCustomerInfoVo> finaCustomerVos = new ArrayList<>();
// finaCustomerVos.add(finaCustomerVo);
// try {
// String parameter=JSON.toJSONString(finaCustomerVo);
// parameter=parameter.replaceAll("finaCustomerPayList","LFB1");
// parameter=parameter.replaceAll("finaCustomerBankList","BANK");
// // parameter=com.huigou.topsun.util.CommonUtil.camelToUnderline(parameter);
// resultMap.put("parameter", parameter);
// String result = defaultHttpClient.execute(finaCustomerVos, url);
// List<SapResult> sapResultList = JSONObject.parseArray(result, SapResult.class);
// if (sapResultList.size()<1){
// throw new RuntimeException("数据传输失败,没有收到返回结果:" + sapResultList);
// }
// SapResult sapResult = sapResultList.get(0);
// resultMap.put("sequence", resultMap.get("row"));
// if ("S".equals(sapResult.getTYPE())) {
// if ("0".equals(finaCustomer.getApplyType())){
// finaCustomer.setBuPartner(sapResult.getMESSAGE_V1().substring(4));
// resultMap.put("MESSAGE", sapResult.getMESSAGE()+sapResult.getMESSAGE_V1().substring(4));
// } else {
// resultMap.put("MESSAGE", sapResult.getMESSAGE());
// }
// resultMap.put("TYPE", sapResult.getTYPE());
// finaCustomerRepository.save(finaCustomer);
//
// } else {
// throw new RuntimeException("数据传输失败,请稍后手动重试!" + sapResult.getMESSAGE());
// }
// } catch (Exception e) {
// resultMap.put("TYPE", "E");
// resultMap.put("MESSAGE", e.getMessage());
// throw new RuntimeException("数据传输失败请检查数据后重试!" + e.getMessage());
// } finally {
// sapMutualEpLogApplication.saveSapMutualEpLog(resultMap);
// }
//
//
// }
@Transactional @Transactional
public void sendSapClientData(FinaCustomerInfo finaCustomer, List<FinaCustomerPay> payList, List<FinaCustomerBank> bankList) { public void sendSapClientData(FinaCustomerInfo finaCustomer, List<FinaCustomerPay> payList, List<FinaCustomerBank> bankList) {
List<MdClientSapVo> mdClientSapVoList = new ArrayList<>(); List<MdClientSapVo> mdClientSapVoList = new ArrayList<>();
...@@ -367,7 +273,7 @@ public class FinaCustomerApplicationImpl extends FlowBroker implements FinaCusto ...@@ -367,7 +273,7 @@ public class FinaCustomerApplicationImpl extends FlowBroker implements FinaCusto
mdClientSapVo.setStras(finaCustomer.getStreet());//街道 mdClientSapVo.setStras(finaCustomer.getStreet());//街道
mdClientSapVo.setTaxnumxl(finaCustomer.getStenr());//税号 mdClientSapVo.setTaxnumxl(finaCustomer.getStenr());//税号
mdClientSapVo.setUpdkz("I"); mdClientSapVo.setUpdkz("I");
mdClientSapVo.setTaxtype("CN5");//税类别 //mdClientSapVo.setTaxType("CN5");//税类别
if (finaCustomer.getApplyType().equals("1")) { //更新 if (finaCustomer.getApplyType().equals("1")) { //更新
mdClientSapVo.setUpdkz("U"); mdClientSapVo.setUpdkz("U");
} }
...@@ -391,10 +297,6 @@ public class FinaCustomerApplicationImpl extends FlowBroker implements FinaCusto ...@@ -391,10 +297,6 @@ public class FinaCustomerApplicationImpl extends FlowBroker implements FinaCusto
CompanyCodeVo companyCodeVo = new CompanyCodeVo(); CompanyCodeVo companyCodeVo = new CompanyCodeVo();
ClassHelper.copyProperties(finaCustomerPay, companyCodeVo); ClassHelper.copyProperties(finaCustomerPay, companyCodeVo);
companyCodeVo.setAkont(finaCustomerPay.getAkontCustomer()); companyCodeVo.setAkont(finaCustomerPay.getAkontCustomer());
//前置补零
// DecimalFormat g1=new DecimalFormat("000");
// String startZeroStr = g1.format(Integer.valueOf(i+1));
// companyCodeVo.setZuawa(startZeroStr);
if ("0".equals(companyCodeVo.getSperrB())){ if ("0".equals(companyCodeVo.getSperrB())){
companyCodeVo.setSperrB(""); companyCodeVo.setSperrB("");
} }
......
...@@ -59,7 +59,7 @@ public class FinaCustomerController extends CommonController { ...@@ -59,7 +59,7 @@ public class FinaCustomerController extends CommonController {
String flag=sdo.getString("flag"); String flag=sdo.getString("flag");
FinaCustomerInfo finaCustomerInfo = new FinaCustomerInfo(); FinaCustomerInfo finaCustomerInfo = new FinaCustomerInfo();
finaCustomerInfo.setCreationGroup("C006");//分组: 默认【C006】,不可更改 finaCustomerInfo.setCreationGroup("C006");//分组: 默认【C006】,不可更改
finaCustomerInfo.setPartnerRole("FLCU00");//业务伙伴角色 默认【FLCU00】,不可更改 finaCustomerInfo.setPartnerRole("");//业务伙伴角色
finaCustomerInfo.setApplyType("0"); finaCustomerInfo.setApplyType("0");
String isDel=sdo.getString("isDel"); String isDel=sdo.getString("isDel");
String page = "finaCustomerDetail"; String page = "finaCustomerDetail";
......
...@@ -154,6 +154,18 @@ public class FinaCustomerInfo extends FlowBillAbstractEntity { ...@@ -154,6 +154,18 @@ public class FinaCustomerInfo extends FlowBillAbstractEntity {
@Column(name = "stenr") @Column(name = "stenr")
private String stenr; private String stenr;
/**
* 税号类比
*/
@Column(name = "tax_type")
private String taxType;
/**
* 税号类比
*/
@Column(name = "tax_type_name")
private String taxTypeName;
/** /**
* 中心记帐冻结 * 中心记帐冻结
*/ */
......
...@@ -52,6 +52,12 @@ public class FinaCustomerPay implements Serializable { ...@@ -52,6 +52,12 @@ public class FinaCustomerPay implements Serializable {
@Column(name = "zuawa") @Column(name = "zuawa")
private String zuawa; private String zuawa;
/**
* 根据分配号排序代码
*/
@Column(name = "zuawa_name")
private String zuawaName;
/** /**
* 付款条件代码 * 付款条件代码
*/ */
......
...@@ -57,7 +57,7 @@ public class MdClientSapVo { ...@@ -57,7 +57,7 @@ public class MdClientSapVo {
* 税号类比 * 税号类比
*/ */
@JsonProperty("TAXTYPE") @JsonProperty("TAXTYPE")
private String taxtype; private String taxType;
/** /**
* 税号 * 税号
*/ */
......
...@@ -14,4 +14,18 @@ ...@@ -14,4 +14,18 @@
<condition column="ep_sale_order_id" name="epSaleOrderId" type="java.lang.String" symbol="=" alias="t"/> <condition column="ep_sale_order_id" name="epSaleOrderId" type="java.lang.String" symbol="=" alias="t"/>
</query> </query>
<query name="epChangeFormStockItem">
<sql-query>
select t.* from ep_change_form_stock_item t where 1=1
</sql-query>
<condition column="ep_change_form_id" name="epChangeFormId" type="java.lang.String" symbol="=" alias="t"/>
</query>
<query name="epChangeFormImplItem">
<sql-query>
select t.* from ep_change_form_impl_item t where 1=1
</sql-query>
<condition column="ep_change_form_id" name="epChangeFormId" type="java.lang.String" symbol="=" alias="t"/>
</query>
</query-mappings> </query-mappings>
\ No newline at end of file
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