Commit 80fd740c authored by 鲁鑫's avatar 鲁鑫

费用报销接收到SAP付款回执后更新待办任务;验证发票号是否提交过

parent 74aaad13
...@@ -643,7 +643,51 @@ function getExtendedData(processAction) { ...@@ -643,7 +643,51 @@ function getExtendedData(processAction) {
} }
return mergedObj; return mergedObj;
}); });
var subProcUnitId = getSubProcUnitId();
//如果没有收到SAP消息回执,不能提交归档
if ("file" === subProcUnitId){
var _financialGrid = UICtrl.getGridManager('#financialAuditGrid');
var financialDatas = DataUtil.getGridData({
gridManager: _financialGrid,
isAllData: isAllData,
onCheck: function () {
return true;
}
});
if (!financialDatas) {
return false;
}
var checked7 = false
var num = 0;
$.each(financialDatas, function (i, o) {
if (o.zepPay == "Y"){
checked7 = true
}
});
var _grid = UICtrl.getGridManager('#paymentAccomplish_sapReturnGrid');
var datas = DataUtil.getGridData({
gridManager: _grid,
isAllData: isAllData,
onCheck: function () {
return true;
}
});
if (!datas) {
return false;
}
var checked6 = false
if (checked7){
$.each(datas, function (i, o) {
if (Public.isBlank(o.belnr1) || Public.isBlank(o.gjahr1)){
checked6 = true;
}
})
}
if (checked6){
Public.tip("请收到'付款完成、sap回执'消息后才归档");
return false;
}
}
let extendedData = {}; let extendedData = {};
extendedData.CRDetail = Public.encodeJSONURI(result); extendedData.CRDetail = Public.encodeJSONURI(result);
return extendedData; return extendedData;
......
...@@ -674,7 +674,7 @@ function loadGrid(obj) { ...@@ -674,7 +674,7 @@ function loadGrid(obj) {
check = false; check = false;
Public.tip("含税金额(审批)不能大于含税金额") Public.tip("含税金额(审批)不能大于含税金额")
$.each(_secondGrid.currentData.Rows, function (i, row) { $.each(_secondGrid.currentData.Rows, function (i, row) {
if (data.zepItemno = row.zepItemno){ if (data.zepItemno == row.zepItemno){
_secondGrid.updateRow(row,{ _secondGrid.updateRow(row,{
zepPtdamount1:data.kzwi1, zepPtdamount1:data.kzwi1,
}) })
...@@ -761,6 +761,24 @@ function loadGrid(obj) { ...@@ -761,6 +761,24 @@ function loadGrid(obj) {
}) })
UICtrl.setGridColumns(obj.gridManager,columns); UICtrl.setGridColumns(obj.gridManager,columns);
} }
//费用报销单据发票号码栏,校验发票号码是否重复,重复(状态是已完成,申请,审批中)则提示该发票已经提交过,发票无效
if (item.column.name == "zyl06"){
Public.ajax(web_app.name+"/sapCostReimbursement/checkzyl06.ajax",{zyl06:item.record.zyl06},function (data) {
if (data > 0){
Public.tip("该发票 '"+item.value+"' 已经提交过,发票无效");
var _grid = UICtrl.getGridManager('#reimbursementApplierGrid');
var zepItemno = item.record.zepItemno;
$.each(_grid.currentData.Rows, function (i, row) {
if (zepItemno == row.zepItemno){
_grid.updateRow(row,{
zyl06:"",
})
}
})
}
})
}
return item; return item;
}, },
onAfterShowData:function (){ onAfterShowData:function (){
...@@ -900,6 +918,7 @@ function getExtendedData(processAction) { ...@@ -900,6 +918,7 @@ function getExtendedData(processAction) {
} }
var checked4 = false var checked4 = false
var checked5 = false var checked5 = false
var checked7 = false
var num = 0; var num = 0;
$.each(datas, function (i, o) { $.each(datas, function (i, o) {
//判断不含税金额(审批)=含税金额(审批)- 税额(审批) //判断不含税金额(审批)=含税金额(审批)- 税额(审批)
...@@ -914,6 +933,9 @@ function getExtendedData(processAction) { ...@@ -914,6 +933,9 @@ function getExtendedData(processAction) {
checked5 = true; checked5 = true;
num = i + 1 num = i + 1
} }
if (o.zepPay == "N"){
checked7 = true
}
}); });
if (checked4) { if (checked4) {
Public.tip("行项目:" + num + "中,不含税金额(审批)+ 税额(审批)不等于 含税金额(审批)请检查") Public.tip("行项目:" + num + "中,不含税金额(审批)+ 税额(审批)不等于 含税金额(审批)请检查")
...@@ -925,6 +947,51 @@ function getExtendedData(processAction) { ...@@ -925,6 +947,51 @@ function getExtendedData(processAction) {
} }
} }
//如果没有收到SAP消息回执,不能提交归档
if ("file" === subProcUnitId){
var _financialGrid = UICtrl.getGridManager('#financialAuditGrid');
var financialDatas = DataUtil.getGridData({
gridManager: _financialGrid,
isAllData: isAllData,
onCheck: function () {
return true;
}
});
if (!financialDatas) {
return false;
}
var checked7 = false
var num = 0;
$.each(financialDatas, function (i, o) {
if (o.zepPay == "Y"){
checked7 = true
}
});
var _grid = UICtrl.getGridManager('#paymentAccomplish_sapReturnGrid');
var datas = DataUtil.getGridData({
gridManager: _grid,
isAllData: isAllData,
onCheck: function () {
return true;
}
});
if (!datas) {
return false;
}
var checked6 = false
if (checked7){
$.each(datas, function (i, o) {
if (Public.isBlank(o.belnr1) || Public.isBlank(o.gjahr1)){
checked6 = true;
}
})
}
if (checked6){
Public.tip("请收到'付款完成、sap回执'消息后才归档");
return false;
}
}
let extendedData = {}; let extendedData = {};
extendedData.CRDetail = Public.encodeJSONURI(result); extendedData.CRDetail = Public.encodeJSONURI(result);
return extendedData; return extendedData;
......
...@@ -673,7 +673,51 @@ function getExtendedData(processAction) { ...@@ -673,7 +673,51 @@ function getExtendedData(processAction) {
} }
return mergedObj; return mergedObj;
}); });
var subProcUnitId = getSubProcUnitId();
//如果没有收到SAP消息回执,不能提交归档
if ("file" === subProcUnitId){
var _financialGrid = UICtrl.getGridManager('#financialAuditGrid');
var financialDatas = DataUtil.getGridData({
gridManager: _financialGrid,
isAllData: isAllData,
onCheck: function () {
return true;
}
});
if (!financialDatas) {
return false;
}
var checked7 = false
var num = 0;
$.each(financialDatas, function (i, o) {
if (o.zepPay == "Y"){
checked7 = true
}
});
var _grid = UICtrl.getGridManager('#paymentAccomplish_sapReturnGrid');
var datas = DataUtil.getGridData({
gridManager: _grid,
isAllData: isAllData,
onCheck: function () {
return true;
}
});
if (!datas) {
return false;
}
var checked6 = false
if (checked7){
$.each(datas, function (i, o) {
if (Public.isBlank(o.belnr1) || Public.isBlank(o.gjahr1)){
checked6 = true;
}
})
}
if (checked6){
Public.tip("请收到'付款完成、sap回执'消息后才归档");
return false;
}
}
let extendedData = {}; let extendedData = {};
extendedData.CRDetail = Public.encodeJSONURI(result); extendedData.CRDetail = Public.encodeJSONURI(result);
return extendedData; return extendedData;
......
...@@ -679,7 +679,51 @@ function getExtendedData(processAction) { ...@@ -679,7 +679,51 @@ function getExtendedData(processAction) {
} }
return mergedObj; return mergedObj;
}); });
var subProcUnitId = getSubProcUnitId();
//如果没有收到SAP消息回执,不能提交归档
if ("file" === subProcUnitId){
var _financialGrid = UICtrl.getGridManager('#financialAuditGrid');
var financialDatas = DataUtil.getGridData({
gridManager: _financialGrid,
isAllData: isAllData,
onCheck: function () {
return true;
}
});
if (!financialDatas) {
return false;
}
var checked7 = false
var num = 0;
$.each(financialDatas, function (i, o) {
if (o.zepPay == "Y"){
checked7 = true
}
});
var _grid = UICtrl.getGridManager('#paymentAccomplish_sapReturnGrid');
var datas = DataUtil.getGridData({
gridManager: _grid,
isAllData: isAllData,
onCheck: function () {
return true;
}
});
if (!datas) {
return false;
}
var checked6 = false
if (checked7){
$.each(datas, function (i, o) {
if (Public.isBlank(o.belnr1) || Public.isBlank(o.gjahr1)){
checked6 = true;
}
})
}
if (checked6){
Public.tip("请收到'付款完成、sap回执'消息后才归档");
return false;
}
}
let extendedData = {}; let extendedData = {};
extendedData.CRDetail = Public.encodeJSONURI(result); extendedData.CRDetail = Public.encodeJSONURI(result);
return extendedData; return extendedData;
......
...@@ -759,6 +759,23 @@ function loadGrid(obj) { ...@@ -759,6 +759,23 @@ function loadGrid(obj) {
}) })
UICtrl.setGridColumns(obj.gridManager,columns); UICtrl.setGridColumns(obj.gridManager,columns);
} }
//费用报销单据发票号码栏,校验发票号码是否重复,重复(状态是已完成,申请,审批中)则提示该发票已经提交过,发票无效
if (item.column.name == "zyl06"){
Public.ajax(web_app.name+"/sapCostReimbursement/checkzyl06.ajax",{zyl06:item.record.zyl06},function (data) {
if (data > 0){
Public.tip("该发票 '"+item.value+"' 已经提交过,发票无效");
var _grid = UICtrl.getGridManager('#reimbursementApplierGrid');
var zepItemno = item.record.zepItemno;
$.each(_grid.currentData.Rows, function (i, row) {
if (zepItemno == row.zepItemno){
_grid.updateRow(row,{
zyl06:"",
})
}
})
}
})
}
return item; return item;
}, },
onAfterShowData:function (){ onAfterShowData:function (){
...@@ -879,7 +896,51 @@ function getExtendedData(processAction) { ...@@ -879,7 +896,51 @@ function getExtendedData(processAction) {
} }
return mergedObj; return mergedObj;
}); });
var subProcUnitId = getSubProcUnitId();
//如果没有收到SAP消息回执,不能提交归档
if ("file" === subProcUnitId){
var _financialGrid = UICtrl.getGridManager('#financialAuditGrid');
var financialDatas = DataUtil.getGridData({
gridManager: _financialGrid,
isAllData: isAllData,
onCheck: function () {
return true;
}
});
if (!financialDatas) {
return false;
}
var checked7 = false
var num = 0;
$.each(financialDatas, function (i, o) {
if (o.zepPay == "Y"){
checked7 = true
}
});
var _grid = UICtrl.getGridManager('#paymentAccomplish_sapReturnGrid');
var datas = DataUtil.getGridData({
gridManager: _grid,
isAllData: isAllData,
onCheck: function () {
return true;
}
});
if (!datas) {
return false;
}
var checked6 = false
if (checked7){
$.each(datas, function (i, o) {
if (Public.isBlank(o.belnr1) || Public.isBlank(o.gjahr1)){
checked6 = true;
}
})
}
if (checked6){
Public.tip("请收到'付款完成、sap回执'消息后才归档");
return false;
}
}
let extendedData = {}; let extendedData = {};
extendedData.CRDetail = Public.encodeJSONURI(result); extendedData.CRDetail = Public.encodeJSONURI(result);
return extendedData; return extendedData;
......
...@@ -579,7 +579,51 @@ function getExtendedData(processAction) { ...@@ -579,7 +579,51 @@ function getExtendedData(processAction) {
} }
return mergedObj; return mergedObj;
}); });
var subProcUnitId = getSubProcUnitId();
//如果没有收到SAP消息回执,不能提交归档
if ("file" === subProcUnitId){
var _financialGrid = UICtrl.getGridManager('#financialAuditGrid');
var financialDatas = DataUtil.getGridData({
gridManager: _financialGrid,
isAllData: isAllData,
onCheck: function () {
return true;
}
});
if (!financialDatas) {
return false;
}
var checked7 = false
var num = 0;
$.each(financialDatas, function (i, o) {
if (o.zepPay == "Y"){
checked7 = true
}
});
var _grid = UICtrl.getGridManager('#paymentAccomplish_sapReturnGrid');
var datas = DataUtil.getGridData({
gridManager: _grid,
isAllData: isAllData,
onCheck: function () {
return true;
}
});
if (!datas) {
return false;
}
var checked6 = false
if (checked7){
$.each(datas, function (i, o) {
if (Public.isBlank(o.belnr1) || Public.isBlank(o.gjahr1)){
checked6 = true;
}
})
}
if (checked6){
Public.tip("请收到'付款完成、sap回执'消息后才归档");
return false;
}
}
let extendedData = {}; let extendedData = {};
extendedData.CRDetail = Public.encodeJSONURI(result); extendedData.CRDetail = Public.encodeJSONURI(result);
return extendedData; return extendedData;
......
...@@ -99,4 +99,15 @@ public class Function extends AbstractDaoFunction { ...@@ -99,4 +99,15 @@ public class Function extends AbstractDaoFunction {
sql = sql.replace("%s",tableName); sql = sql.replace("%s",tableName);
return this.sqlExecutorDao.queryToList(sql, OrgUnit.class,bizId); return this.sqlExecutorDao.queryToList(sql, OrgUnit.class,bizId);
} }
/**
* 根据业务主表id查询申请人
* @param bizId
* @return
*/
public List<OrgUnit> findPersonMember(String bizId){
Assert.hasText(bizId, "参数id不能为空。");
String sql = this.getSqlByname("findPersonMember");
return this.sqlExecutorDao.queryToList(sql, OrgUnit.class,bizId);
}
} }
...@@ -30,4 +30,6 @@ public interface SapCostReimbursementApplication { ...@@ -30,4 +30,6 @@ public interface SapCostReimbursementApplication {
void savePaymentReceiptVo(PaymentReceiptVo paymentReceiptVo); void savePaymentReceiptVo(PaymentReceiptVo paymentReceiptVo);
String queryTaskByBizId(String bizId); String queryTaskByBizId(String bizId);
Integer checkzyl06(String zyl06);
} }
\ No newline at end of file
...@@ -24,6 +24,8 @@ import com.huigou.topsun.util.MyBaseUtil; ...@@ -24,6 +24,8 @@ import com.huigou.topsun.util.MyBaseUtil;
import com.huigou.uasp.bmp.common.BizBillStatus; import com.huigou.uasp.bmp.common.BizBillStatus;
import com.huigou.uasp.bmp.operator.OperatorApplication; import com.huigou.uasp.bmp.operator.OperatorApplication;
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.*; import com.huigou.util.*;
import lombok.SneakyThrows; import lombok.SneakyThrows;
import org.activiti.engine.delegate.DelegateExecution; import org.activiti.engine.delegate.DelegateExecution;
...@@ -141,6 +143,17 @@ public class SapCostReimbursementApplicationImpl extends FlowBroker implements S ...@@ -141,6 +143,17 @@ public class SapCostReimbursementApplicationImpl extends FlowBroker implements S
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();
if ("fundNode".equals(subProcUnitId)){
//在资产节点传到SAP
this.sendSapDate(this.costReimbursementRepository.findOne(bizId));
}
}
} }
/** /**
...@@ -174,7 +187,7 @@ public class SapCostReimbursementApplicationImpl extends FlowBroker implements S ...@@ -174,7 +187,7 @@ public class SapCostReimbursementApplicationImpl extends FlowBroker implements S
sapCostReimbursement.setStatusId(status.getId()); sapCostReimbursement.setStatusId(status.getId());
costReimbursementRepository.save(sapCostReimbursement); costReimbursementRepository.save(sapCostReimbursement);
//审核完成、远程调用sap接口 //审核完成、远程调用sap接口
sendSapDate(sapCostReimbursement); //sendSapDate(sapCostReimbursement);
} }
@Override @Override
...@@ -319,7 +332,9 @@ public class SapCostReimbursementApplicationImpl extends FlowBroker implements S ...@@ -319,7 +332,9 @@ public class SapCostReimbursementApplicationImpl extends FlowBroker implements S
sapCostReimbursementDetail.setGjahr1(paymentReceiptVo.getGjahr1()); sapCostReimbursementDetail.setGjahr1(paymentReceiptVo.getGjahr1());
costReimbursementDetailRepository.save(sapCostReimbursementDetail); costReimbursementDetailRepository.save(sapCostReimbursementDetail);
} }
this.makeACopyFor(reimbursement); //在接收到SAP回执消息后,修改任务标题和当前时间,让申请人能看到该任务
this.updateActRuTaskExtension(reimbursement.getId());
//this.makeACopyFor(reimbursement);
} }
@Override @Override
...@@ -330,6 +345,14 @@ public class SapCostReimbursementApplicationImpl extends FlowBroker implements S ...@@ -330,6 +345,14 @@ public class SapCostReimbursementApplicationImpl extends FlowBroker implements S
return taskId; return taskId;
} }
@Override
public Integer checkzyl06(String zyl06) {
QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(QUERY_XML_FILE_PATH, "checkzyl06");
String sql = queryDescriptor.getSql();
int i = this.sqlExecutorDao.queryToInt(sql, zyl06);
return i;
}
public void makeACopyFor(SapCostReimbursement reimbursement) { public void makeACopyFor(SapCostReimbursement reimbursement) {
// 流程结束给申请人发送抄送 // 流程结束给申请人发送抄送
List<String> executorIds = new ArrayList<>(1); List<String> executorIds = new ArrayList<>(1);
...@@ -340,6 +363,12 @@ public class SapCostReimbursementApplicationImpl extends FlowBroker implements S ...@@ -340,6 +363,12 @@ public class SapCostReimbursementApplicationImpl extends FlowBroker implements S
this.workflowService.makeACopyFor(taskId, executorIds,"付款完成、sap回执:"+reimbursement.getZepFtypename()+"-"+reimbursement.getBillCode()); this.workflowService.makeACopyFor(taskId, executorIds,"付款完成、sap回执:"+reimbursement.getZepFtypename()+"-"+reimbursement.getBillCode());
} }
public void updateActRuTaskExtension(String bizId){
QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(QUERY_XML_FILE_PATH, "updateActRuTaskExtension");
String sql = queryDescriptor.getSql();
this.sqlExecutorDao.executeUpdate(sql, "付款完成、sap回执:",new Date(),bizId);
}
public static void main(String[] args) throws JsonProcessingException { public static void main(String[] args) throws JsonProcessingException {
// post.setHeader("Content-type", "application/json;charset=utf-8"); // post.setHeader("Content-type", "application/json;charset=utf-8");
......
...@@ -195,4 +195,15 @@ public class SapCostReimbursementController extends CommonController { ...@@ -195,4 +195,15 @@ public class SapCostReimbursementController extends CommonController {
} }
return messageMap; return messageMap;
} }
/**
* 根据发票号校验是否已经提交过该发票号
* @return
*/
public String checkzyl06(){
SDO sdo = this.getSDO();
String zyl06 = sdo.getString("zyl06");
Integer count = costReimbursementApplication.checkzyl06(zyl06);
return success(count);
}
} }
\ No newline at end of file
...@@ -60,6 +60,11 @@ ...@@ -60,6 +60,11 @@
o.id IN ( SELECT o.PARENT_ID FROM sa_oporg o LEFT JOIN %s pro ON o.id = pro.person_member_id WHERE pro.id = ? ) ) ) ) o.id IN ( SELECT o.PARENT_ID FROM sa_oporg o LEFT JOIN %s pro ON o.id = pro.person_member_id WHERE pro.id = ? ) ) ) )
AND o.CODE IN ( 'JL', 'ZZ' ,'ZJ')); AND o.CODE IN ( 'JL', 'ZZ' ,'ZJ'));
</sql> </sql>
<sql name="findPersonMember">
SELECT o.FULL_ID, o.FULL_NAME
FROM sa_oporg o LEFT JOIN sap_cost_reimbursement_base_info t ON t.person_member_id = o.id WHERE t.id = ?
</sql>
</query> </query>
</query-mappings> </query-mappings>
\ No newline at end of file
...@@ -29,4 +29,20 @@ ...@@ -29,4 +29,20 @@
AND t.TASK_DEF_KEY_ = 'Apply' ORDER BY t.START_TIME_ desc LIMIT 1 AND t.TASK_DEF_KEY_ = 'Apply' ORDER BY t.START_TIME_ desc LIMIT 1
</sql-query> </sql-query>
</query> </query>
<query name="updateActRuTaskExtension">
<sql-query>
UPDATE act_ru_task_extension t
SET t.DESCRIPTION_ = CONCAT( ?, t.DESCRIPTION_ ),
t.START_TIME_ = ? WHERE t.BUSINESS_KEY_ = ?
</sql-query>
</query>
<query name="checkzyl06">
<sql-query>
SELECT COUNT( d.reimbursement_detail_id ) AS num FROM sap_cost_reimbursement_detail d
LEFT JOIN sap_cost_reimbursement_base_info t ON t.id = d.reimbursement_base_info_id
WHERE t.STATUS IN ( 1, 3 ) AND d.ZYL06 = ?
</sql-query>
</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