清账优化
This commit is contained in:
parent
95c9ab67e4
commit
6f00c5a869
|
|
@ -31,20 +31,20 @@ public class ClearBillListPlugin extends AbstractListPlugin implements Plugin {
|
||||||
@Override
|
@Override
|
||||||
public void itemClick(ItemClickEvent evt) {
|
public void itemClick(ItemClickEvent evt) {
|
||||||
super.itemClick(evt);
|
super.itemClick(evt);
|
||||||
try {
|
// try {
|
||||||
if ("shjh_unclearacctount".equals(evt.getItemKey())) {
|
// if ("shjh_unclearacctount".equals(evt.getItemKey())) {
|
||||||
//点击反清账按钮
|
// //点击反清账按钮
|
||||||
FormShowParameter showParameter = createParam(evt.getItemKey(),unClearFormID);
|
// FormShowParameter showParameter = createParam(evt.getItemKey(),unClearFormID);
|
||||||
this.getView().showForm(showParameter);
|
// this.getView().showForm(showParameter);
|
||||||
}else if("shjh_changestatus".equals(evt.getItemKey())){
|
// }else if("shjh_changestatus".equals(evt.getItemKey())){
|
||||||
//点击修改清账单状态按钮
|
// //点击修改清账单状态按钮
|
||||||
// FormShowParameter showParameter = createParam(evt.getItemKey(),updateStatusFormID);
|
// FormShowParameter showParameter = createParam(evt.getItemKey(),updateStatusFormID);
|
||||||
// this.getView().showForm(showParameter);
|
// this.getView().showForm(showParameter);
|
||||||
}
|
// }
|
||||||
} catch (Exception e) {
|
// } catch (Exception e) {
|
||||||
logger.error("按钮处理异常:"+e.getMessage());
|
// logger.error("按钮处理异常:"+e.getMessage());
|
||||||
this.getView().showMessage("按钮处理异常"+e.getMessage());
|
// this.getView().showMessage("按钮处理异常"+e.getMessage());
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -57,7 +57,7 @@ public class ClearBillListPlugin extends AbstractListPlugin implements Plugin {
|
||||||
super.afterDoOperation(e);
|
super.afterDoOperation(e);
|
||||||
String okey = e.getOperateKey();
|
String okey = e.getOperateKey();
|
||||||
if("unclearacctount_check".equals(okey) && e.getOperationResult().isSuccess()){
|
if("unclearacctount_check".equals(okey) && e.getOperationResult().isSuccess()){
|
||||||
//点击反清账按钮
|
//点击反清账按钮-先进行反清账的校验,校验通过后,才弹框
|
||||||
FormShowParameter showParameter = createParam(okey,unClearFormID);
|
FormShowParameter showParameter = createParam(okey,unClearFormID);
|
||||||
this.getView().showForm(showParameter);
|
this.getView().showForm(showParameter);
|
||||||
}else if("updatestatus_check".equals(okey) && e.getOperationResult().isSuccess()){
|
}else if("updatestatus_check".equals(okey) && e.getOperationResult().isSuccess()){
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,10 @@ import java.util.*;
|
||||||
*/
|
*/
|
||||||
public class ClearAccountBillOperation extends AbstractOperationServicePlugIn implements Plugin {
|
public class ClearAccountBillOperation extends AbstractOperationServicePlugIn implements Plugin {
|
||||||
|
|
||||||
private static final String updateClearStatus = "update tk_shjh_clear_account set fbillstatus='D' where fid=?;";
|
//更新单据状态为作废
|
||||||
|
private static final String updateInvalidStatus = "update tk_shjh_clear_account set fbillstatus='D' where fid=?;";
|
||||||
|
//更新单据状态为已提交
|
||||||
|
private static final String updateSubmitStatus = "update tk_shjh_clear_account set fbillstatus='B' where fid=?;";
|
||||||
//手动修改清账状态
|
//手动修改清账状态
|
||||||
private static final String hadleClearStatusByID = "update tk_shjh_clear_account set fk_shjh_changereason='手工清账',fk_shjh_clearstatus='A',fbillstatus='C' where fid=?;";
|
private static final String hadleClearStatusByID = "update tk_shjh_clear_account set fk_shjh_changereason='手工清账',fk_shjh_clearstatus='A',fbillstatus='C' where fid=?;";
|
||||||
private static final String updateSap = "update tk_shjh_clear_account set fk_shjh_clearstatus='A',fk_shjh_pzh=?,fk_shjh_year=? where fid=?;";
|
private static final String updateSap = "update tk_shjh_clear_account set fk_shjh_clearstatus='A',fk_shjh_pzh=?,fk_shjh_year=? where fid=?;";
|
||||||
|
|
@ -326,8 +329,11 @@ public class ClearAccountBillOperation extends AbstractOperationServicePlugIn im
|
||||||
detailinfo = newDetailBill(prinfo, userinfo);
|
detailinfo = newDetailBill(prinfo, userinfo);
|
||||||
//发送清账明细单的OA待办
|
//发送清账明细单的OA待办
|
||||||
JhzjUtils.handleOA(detailinfo, "0", "0");
|
JhzjUtils.handleOA(detailinfo, "0", "0");
|
||||||
JhzjUtils.sendEmail(userinfo.getString("email"), "请登录资金系统操作清账明细单",
|
receivers.clear();
|
||||||
detailinfo.getString("billno") + "\n 详情页面" + JhzjUtils.getBillPCURL(detailinfo), "清账明细单新增");
|
receivers.add(userinfo.getLong("id"));
|
||||||
|
String pcurl = JhzjUtils.getBillPCURL(detailinfo);
|
||||||
|
JhzjUtils.sendEmail("请登录资金系统操作清账明细单", detailinfo.getString("billno") +
|
||||||
|
"<br> 详情页面 <a href='"+pcurl+"' target='_blank'>"+pcurl+"</a>", receivers, detailinfo);
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
//根据客户、公司、是否可用找到对应的被通知人员(可能多个)
|
//根据客户、公司、是否可用找到对应的被通知人员(可能多个)
|
||||||
|
|
@ -619,7 +625,7 @@ public class ClearAccountBillOperation extends AbstractOperationServicePlugIn im
|
||||||
private void handleAudit(AfterOperationArgs e) {
|
private void handleAudit(AfterOperationArgs e) {
|
||||||
//审核具体实现
|
//审核具体实现
|
||||||
DynamicObject[] dos = e.getDataEntities();
|
DynamicObject[] dos = e.getDataEntities();
|
||||||
DynamicObject prinfo;//清账单
|
DynamicObject prinfo = null;//清账单
|
||||||
DynamicObject detailinfo;//清账明细单
|
DynamicObject detailinfo;//清账明细单
|
||||||
DynamicObject[] ddos;
|
DynamicObject[] ddos;
|
||||||
String billstatus;
|
String billstatus;
|
||||||
|
|
@ -632,12 +638,16 @@ public class ClearAccountBillOperation extends AbstractOperationServicePlugIn im
|
||||||
resultData = sapTransactionVoucher(prinfo);
|
resultData = sapTransactionVoucher(prinfo);
|
||||||
if(resultData == null){
|
if(resultData == null){
|
||||||
addErrorInfo(prinfo,"调用SAP清账接口失败,详见接口日志");
|
addErrorInfo(prinfo,"调用SAP清账接口失败,详见接口日志");
|
||||||
|
//审核后续操作失败,需要更新清账单的单据状态为已提交
|
||||||
|
DB.update(DBRoute.of("fi"), updateSubmitStatus, new Object[]{prinfo.getPkValue()});
|
||||||
continue;
|
continue;
|
||||||
}else{
|
}else{
|
||||||
//解析sap凭证接口返回值
|
//解析sap凭证接口返回值
|
||||||
respdata = ApiUtils.getResponseData(resultData);
|
respdata = ApiUtils.getResponseData(resultData);
|
||||||
if(respdata == null){
|
if(respdata == null){
|
||||||
addErrorInfo(prinfo,"SAP清账接口返回值为空,详见接口日志");
|
addErrorInfo(prinfo,"SAP清账接口返回值为空,详见接口日志");
|
||||||
|
//审核后续操作失败,需要更新清账单的单据状态为已提交
|
||||||
|
DB.update(DBRoute.of("fi"), updateSubmitStatus, new Object[]{prinfo.getPkValue()});
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
//反写清账状态、清账凭证号、会计年度字段至清账单中
|
//反写清账状态、清账凭证号、会计年度字段至清账单中
|
||||||
|
|
@ -664,25 +674,28 @@ public class ClearAccountBillOperation extends AbstractOperationServicePlugIn im
|
||||||
}
|
}
|
||||||
//如果清账明细单【单据状态】=已审核,发送审核通过的邮件通知。
|
//如果清账明细单【单据状态】=已审核,发送审核通过的邮件通知。
|
||||||
if (!detailList.isEmpty()) {
|
if (!detailList.isEmpty()) {
|
||||||
Map<String, String> userBill = new HashMap<>();
|
Map<Long, String> userBill = new HashMap<>();
|
||||||
String billno;
|
String billno;
|
||||||
String useremail;
|
Long userid;
|
||||||
DynamicObject userinfo;
|
DynamicObject userinfo;
|
||||||
for (int i = 0; i < detailList.size(); i++) {
|
for (int i = 0; i < detailList.size(); i++) {
|
||||||
detailinfo = detailList.get(i);
|
detailinfo = detailList.get(i);
|
||||||
userinfo = BusinessDataServiceHelper.loadSingleFromCache(
|
userinfo = BusinessDataServiceHelper.loadSingleFromCache(
|
||||||
detailinfo.getDynamicObject("modifier").getLong("id"), userName);
|
detailinfo.getDynamicObject("modifier").getLong("id"), userName);
|
||||||
useremail = userinfo.getString("email");
|
userid = userinfo.getLong("id");
|
||||||
if (userBill.containsKey(useremail)) {
|
if (userBill.containsKey(userid)) {
|
||||||
billno = userBill.get(useremail);
|
billno = userBill.get(userid);
|
||||||
userBill.put(useremail, billno + "," + detailinfo.getString("billno"));
|
userBill.put(userid, billno + "," + detailinfo.getString("billno"));
|
||||||
} else {
|
} else {
|
||||||
userBill.put(useremail, detailinfo.getString("billno"));
|
userBill.put(userid, detailinfo.getString("billno"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//遍历map,给每个人发邮件
|
//遍历map,给每个人发邮件
|
||||||
for (Map.Entry<String, String> entry : userBill.entrySet()) {
|
List<Long> receivers = new ArrayList<>(1);
|
||||||
JhzjUtils.sendEmail(entry.getKey(), "清账完成通知:", entry.getValue() + "已清账完成", "清账单审核");
|
for (Map.Entry<Long, String> entry : userBill.entrySet()) {
|
||||||
|
receivers.clear();
|
||||||
|
receivers.add(entry.getKey());
|
||||||
|
JhzjUtils.sendEmail("清账完成通知", entry.getValue() + "上述清账明细单已完成清账", receivers, prinfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -694,7 +707,7 @@ public class ClearAccountBillOperation extends AbstractOperationServicePlugIn im
|
||||||
DynamicObject prinfo;
|
DynamicObject prinfo;
|
||||||
for (int i = 0; i < dos.length; i++) {
|
for (int i = 0; i < dos.length; i++) {
|
||||||
prinfo = dos[i];
|
prinfo = dos[i];
|
||||||
DB.update(DBRoute.of("fi"), updateClearStatus, new Object[]{prinfo.getLong("id")});
|
DB.update(DBRoute.of("fi"), updateInvalidStatus, new Object[]{prinfo.getLong("id")});
|
||||||
DB.update(DBRoute.of("fi"), updateDetailStatusByBill, new Object[]{prinfo.getString("id")});
|
DB.update(DBRoute.of("fi"), updateDetailStatusByBill, new Object[]{prinfo.getString("id")});
|
||||||
//处理完成提示
|
//处理完成提示
|
||||||
this.operationResult.addSuccessPkId(prinfo.getPkValue());
|
this.operationResult.addSuccessPkId(prinfo.getPkValue());
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,9 @@ import kd.sdk.plugin.Plugin;
|
||||||
import shjh.jhzj7.fi.fi.utils.JhzjUtils;
|
import shjh.jhzj7.fi.fi.utils.JhzjUtils;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -253,18 +255,28 @@ public class ClearDetailBillOperation extends AbstractOperationServicePlugIn imp
|
||||||
BigDecimal q3 =clearBillInfo.getBigDecimal("shjh_receamount");
|
BigDecimal q3 =clearBillInfo.getBigDecimal("shjh_receamount");
|
||||||
//获取清账单的本次核销金额合计
|
//获取清账单的本次核销金额合计
|
||||||
BigDecimal entrytotal = BigDecimal.ZERO;
|
BigDecimal entrytotal = BigDecimal.ZERO;
|
||||||
|
BigDecimal entrynegatetotal = BigDecimal.ZERO;//获取清账单中对应的已认领收款金额
|
||||||
for (int i = 0; i < cleardoc.size(); i++) {
|
for (int i = 0; i < cleardoc.size(); i++) {
|
||||||
clearEntryInfo = cleardoc.get(i);
|
clearEntryInfo = cleardoc.get(i);
|
||||||
entrytotal = entrytotal.add(clearEntryInfo.getBigDecimal("shjh_e_cursettle"));
|
entrytotal = entrytotal.add(clearEntryInfo.getBigDecimal("shjh_e_cursettle"));
|
||||||
|
if(clearEntryInfo.getBigDecimal("shjh_e_cursettle").signum() == -1){
|
||||||
|
entrynegatetotal = entrynegatetotal.add(clearEntryInfo.getBigDecimal("shjh_e_cursettle"));
|
||||||
}
|
}
|
||||||
//清账单的收款金额+账扣+尾差=本次核销金额合计,即可提交
|
|
||||||
if(entrytotal.compareTo(q1.add(q2).add(q3)) == 0){
|
|
||||||
clearBillInfo.set("billstatus","B");
|
|
||||||
}
|
}
|
||||||
//已认领收款金额=本次核销金额合计-账扣-尾差
|
// //清账单的收款金额+账扣+尾差=本次核销金额合计,即可提交
|
||||||
clearBillInfo.set("shjh_claimamount", entrytotal.subtract(q1).subtract(q2));
|
// if(entrytotal.compareTo(q1.add(q2).add(q3)) == 0){
|
||||||
|
// clearBillInfo.set("billstatus","B");
|
||||||
|
// }
|
||||||
|
// //已认领收款金额=本次核销金额合计-账扣-尾差
|
||||||
|
// clearBillInfo.set("shjh_claimamount", entrytotal.subtract(q1).subtract(q2));
|
||||||
|
//已认领收款金额
|
||||||
|
clearBillInfo.set("shjh_claimamount", entrynegatetotal.abs());
|
||||||
//未认领收款金额=收款金额-已认领收款金额
|
//未认领收款金额=收款金额-已认领收款金额
|
||||||
clearBillInfo.set("shjh_unclaimamount", q3.subtract(clearBillInfo.getBigDecimal("shjh_claimamount")));
|
clearBillInfo.set("shjh_unclaimamount", q3.subtract(clearBillInfo.getBigDecimal("shjh_claimamount")));
|
||||||
|
//未认领收款金额为0,即清账单可以提交
|
||||||
|
if(clearBillInfo.getBigDecimal("shjh_unclaimamount").signum() == 0){
|
||||||
|
clearBillInfo.set("billstatus","B");
|
||||||
|
}
|
||||||
SaveServiceHelper.save(new DynamicObject[]{clearBillInfo});
|
SaveServiceHelper.save(new DynamicObject[]{clearBillInfo});
|
||||||
//解除清账单互斥锁
|
//解除清账单互斥锁
|
||||||
JhzjUtils.unLockBill(clearBillInfo);
|
JhzjUtils.unLockBill(clearBillInfo);
|
||||||
|
|
@ -353,9 +365,10 @@ public class ClearDetailBillOperation extends AbstractOperationServicePlugIn imp
|
||||||
private void handleReject(AfterOperationArgs e){
|
private void handleReject(AfterOperationArgs e){
|
||||||
//驳回具体实现
|
//驳回具体实现
|
||||||
DynamicObject[] dos = e.getDataEntities();
|
DynamicObject[] dos = e.getDataEntities();
|
||||||
DynamicObject prinfo;
|
DynamicObject prinfo;//清账明细单
|
||||||
DynamicObject userinfo;
|
DynamicObject userinfo;
|
||||||
String result;
|
String result;//反写清账单结果
|
||||||
|
List<Long> receivers = new ArrayList<>(1);
|
||||||
for (int i = 0; i < dos.length; i++) {
|
for (int i = 0; i < dos.length; i++) {
|
||||||
prinfo = BusinessDataServiceHelper.loadSingle(dos[i].getPkValue(),dos[i].getDataEntityType().getName());
|
prinfo = BusinessDataServiceHelper.loadSingle(dos[i].getPkValue(),dos[i].getDataEntityType().getName());
|
||||||
//驳回时,删除对应清账单中由明细单反写的表头和分录数据
|
//驳回时,删除对应清账单中由明细单反写的表头和分录数据
|
||||||
|
|
@ -369,8 +382,13 @@ public class ClearDetailBillOperation extends AbstractOperationServicePlugIn imp
|
||||||
userinfo = BusinessDataServiceHelper.loadSingle(prinfo.getDynamicObject("modifier").getLong("id"),
|
userinfo = BusinessDataServiceHelper.loadSingle(prinfo.getDynamicObject("modifier").getLong("id"),
|
||||||
userName);
|
userName);
|
||||||
//驳回时,对清账明细单修改人发送邮件通知,OA待办 业务员可修改后,再次提交。
|
//驳回时,对清账明细单修改人发送邮件通知,OA待办 业务员可修改后,再次提交。
|
||||||
JhzjUtils.sendEmail(userinfo.getString("email"),"请登录资金系统操作清账明细单",
|
// JhzjUtils.sendEmail(userinfo.getString("email"),"请登录资金系统操作清账明细单",
|
||||||
prinfo.getString("billno")+"\n 详情页面 <a href='"+JhzjUtils.getBillPCURL(prinfo)+"' target='_blank'>请点击此次</a>","清账明细单新增");
|
// prinfo.getString("billno")+"\n 详情页面 <a href='"+JhzjUtils.getBillPCURL(prinfo)+"' target='_blank'>请点击此次</a>","清账明细单新增");
|
||||||
|
receivers.clear();
|
||||||
|
receivers.add(userinfo.getLong("id"));
|
||||||
|
String pcurl = JhzjUtils.getBillPCURL(prinfo);
|
||||||
|
JhzjUtils.sendEmail("请登录资金系统操作清账明细单", prinfo.getString("billno") +
|
||||||
|
"<br> 详情页面 <a href='"+pcurl+"' target='_blank'>"+pcurl+"</a>", receivers, prinfo);
|
||||||
JhzjUtils.handleOA(prinfo,"0", "0");
|
JhzjUtils.handleOA(prinfo,"0", "0");
|
||||||
//处理完成提示
|
//处理完成提示
|
||||||
this.operationResult.addSuccessPkId(prinfo.getPkValue());
|
this.operationResult.addSuccessPkId(prinfo.getPkValue());
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue