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