2、收款单的收款人变更后,触发下推标记更新 3、手动定时拉取sap应付凭证 合作银行类型为空带供应商一条银行(多条也需要测试) 4、收款单下推清账单自动生成清账明细单
This commit is contained in:
		
							parent
							
								
									02e9989768
								
							
						
					
					
						commit
						317edd2a6c
					
				|  | @ -170,8 +170,50 @@ public class RecBillFromPlugin extends AbstractFormPlugin implements Plugin { | |||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|                 //结构性清账客户+业务小类(全部金蝶清账),同时满足时,才允许下推清账明细判断 yxl 20250512 | ||||
|                 DynamicObject bizSmall = (DynamicObject) this.getModel().getValue("shjh_bizsmall"); | ||||
|                 boolean iskdqbqz = false;//全部金蝶清账标识 | ||||
|                 if (null != bizSmall) { | ||||
|                     //当收款单【业务小类】清账方式字段=全部金蝶清账 | ||||
|                     if ("qbjdqz".equals(bizSmall.getString("shjh_qzfs"))) { | ||||
|                         iskdqbqz = true; | ||||
|                     } | ||||
|                 } | ||||
|                 DynamicObjectCollection entryEntity = this.getModel().getEntryEntity("entry"); | ||||
|                 if(iskdqbqz){ | ||||
|                     for (int i = 0; i < entryEntity.size(); i++) { | ||||
|                         this.getModel().setValue("shjh_needpushbill", false, i);//不需要下推清账单 | ||||
|                         this.getModel().setValue("shjh_closingstatus", "A", i);//无需金蝶清账 | ||||
|                     } | ||||
|                     if (null != value && "bd_customer".equals(type)) { | ||||
|                         DynamicObject currentorg = (DynamicObject) this.getModel().getValue("org");//单据所属当前公司 | ||||
|                         QFilter mapnumber = new QFilter("shjh_customer.id", QCP.equals, value); | ||||
|                         mapnumber.and("enable", QCP.equals, "1");//是否可用 | ||||
|                         mapnumber.and("shjh_org.id", QCP.equals, currentorg.getLong("id"));//公司 | ||||
|                         DynamicObject mappingObj = BusinessDataServiceHelper.loadSingle("shjh_jgqzcust", mapnumber.toArray()); | ||||
|                         if (null != mappingObj) { | ||||
|                             for (int i = 0; i < entryEntity.size(); i++) { | ||||
|                                 this.getModel().setValue("shjh_needpushbill", true, i);//需要下推清账单 | ||||
|                                 this.getModel().setValue("shjh_closingstatus", "B", i);//待清账 | ||||
|                             } | ||||
|                         } else { | ||||
|                             for (int i = 0; i < entryEntity.size(); i++) { | ||||
|                                 this.getModel().setValue("shjh_needpushbill", false, i);//不需要下推清账单 | ||||
|                                 this.getModel().setValue("shjh_closingstatus", "A", i);//无需金蝶清账 | ||||
|                             } | ||||
|                         } | ||||
|                     } | ||||
|                 }else{ | ||||
|                     //【业务小类】清账方式字段 != 全部金蝶清账 | ||||
|                     for (int i = 0; i < entryEntity.size(); i++) { | ||||
|                         this.getModel().setValue("shjh_needpushbill", false, i);//不需要下推清账单 | ||||
|                         this.getModel().setValue("shjh_closingstatus", "A", i);//无需金蝶清账 | ||||
|                     } | ||||
|                 } | ||||
| 
 | ||||
|                 this.getView().updateView(); | ||||
|             } | ||||
| 
 | ||||
|         }else if (StringUtils.equals(fieldKey, "shjh_bizsmall")) { | ||||
|             //监听业务小类 | ||||
|             //付款人类型=客户或者其他,都可以,根据业务小类的清账方式来判断 | ||||
|  |  | |||
|  | @ -607,7 +607,7 @@ public class SappzFormPlugin extends AbstractFormPlugin { | |||
|                                     ap_payapply_entry.set("e_bebank", bank);//开户银行 | ||||
|                                     ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称 | ||||
|                                     ispp = true; | ||||
|                                 }else if(!EsbUtils.isEmpty(assacct) && bankentrys.size() > 1){ | ||||
|                                 }else if(!EsbUtils.isEmpty(assacct)){ | ||||
|                                     for (DynamicObject bankentry : bankentrys) { | ||||
|                                         if (assacct.equals(bankentry.getString("shjh_banktype"))) { | ||||
|                                             String bankaccount = bankentry.getString("bankaccount"); | ||||
|  |  | |||
|  | @ -37,6 +37,8 @@ public class ClearAccountBillOperation extends AbstractOperationServicePlugIn im | |||
| 
 | ||||
|     //更新单据状态为作废 | ||||
|     private static final String updateInvalidStatus = "update tk_shjh_clear_account set fbillstatus='D' where fid=?;"; | ||||
|     //更新下推明细单结果 | ||||
|     private static final String updatePushStatus = "update tk_shjh_clear_account set fk_shjh_pushdetail=? where fid=?;"; | ||||
|     //更新单据状态为已提交 | ||||
|     private static final String updateSubmitStatus = "update tk_shjh_clear_account set fbillstatus='B' where fid=?;"; | ||||
|     //手动修改清账状态 | ||||
|  | @ -126,6 +128,9 @@ public class ClearAccountBillOperation extends AbstractOperationServicePlugIn im | |||
|         super.afterExecuteOperationTransaction(e); | ||||
|         String eok = e.getOperationKey(); | ||||
|         switch (eok) { | ||||
|             case "save": | ||||
|                 handleClear(e);//保存-触发下推清账明细单 | ||||
|                 break; | ||||
|             case "clearacctount": | ||||
|                 handleClear(e);//清账-下推清账明细单 | ||||
|                 break; | ||||
|  | @ -320,6 +325,11 @@ public class ClearAccountBillOperation extends AbstractOperationServicePlugIn im | |||
|         List<Long> receivers = new ArrayList<>(1); | ||||
|         for (int i = 0; i < dos.length; i++) { | ||||
|             prinfo = BusinessDataServiceHelper.loadSingle(dos[i].getPkValue(), dos[i].getDataEntityType().getName()); | ||||
|             //判断下推明细单结果,如果不是下推成功,则处理,否则不处理 | ||||
|             if("A".equals(prinfo.getString("shjh_pushdetail"))){ | ||||
|                 continue; | ||||
|             } | ||||
| 
 | ||||
|             //判断当前清账单是否由收款单补推,如果是,则根据清账单上的被通知人进行通知;否则根据配置表 | ||||
|             userinfo = prinfo.getDynamicObject("shjh_noticeuser"); | ||||
|             if(userinfo != null){ | ||||
|  | @ -344,6 +354,8 @@ public class ClearAccountBillOperation extends AbstractOperationServicePlugIn im | |||
|                 qFilter.and("shjh_org", QCP.equals, prinfo.getDynamicObject("org").getLong("id")); | ||||
|                 pzbs = BusinessDataServiceHelper.load(pzbName, "id", qFilter.toArray(), "modifytime desc"); | ||||
|                 if (pzbs.length == 0) { | ||||
|                     //更新清账单下推明细单结果 | ||||
|                     DB.update(DBRoute.of("fi"), updatePushStatus, new Object[]{"B", prinfo.getPkValue()}); | ||||
|                     addErrorInfo(prinfo,"根据结构性清账客户映射表未找到对应通知人,无法下推清账明细单"); | ||||
|                     continue; | ||||
|                 } | ||||
|  | @ -364,6 +376,8 @@ public class ClearAccountBillOperation extends AbstractOperationServicePlugIn im | |||
|                         String pcurl = JhzjUtils.getBillPCURL(detailinfo); | ||||
|                         JhzjUtils.sendEmail("请登录资金系统操作清账明细单", detailinfo.getString("billno") + | ||||
|                                 "<br> 详情页面 <a href='"+pcurl+"' target='_blank'>"+pcurl+"</a>", receivers, detailinfo); | ||||
|                         //更新清账单下推明细单结果 | ||||
|                         DB.update(DBRoute.of("fi"), updatePushStatus, new Object[]{"A", prinfo.getPkValue()}); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|  | @ -799,6 +813,56 @@ public class ClearAccountBillOperation extends AbstractOperationServicePlugIn im | |||
|     } | ||||
| 
 | ||||
|     private void handleNotice(AfterOperationArgs e) { | ||||
|         //通知具体实现 | ||||
|         //通知具体实现 防止OA待办未发送成功的情况 | ||||
|         DynamicObject[] dos = e.getDataEntities(); | ||||
|         DynamicObject prinfo;//清账单 | ||||
|         DynamicObject detailinfo;//清账明细单 | ||||
|         QFilter qFilter; | ||||
|         DynamicObject[] pzbs; | ||||
|         DynamicObject pzbinfo;//配置表 | ||||
|         DynamicObject userinfo;//被通知用户 | ||||
|         DynamicObjectCollection users;//配置表中的被通知人集合 | ||||
|         for (int i = 0; i < dos.length; i++) { | ||||
|             prinfo = BusinessDataServiceHelper.loadSingle(dos[i].getPkValue(), dos[i].getDataEntityType().getName()); | ||||
|             //判断当前清账单是否由收款单补推,如果是,则根据清账单上的被通知人进行通知;否则根据配置表 | ||||
|             userinfo = prinfo.getDynamicObject("shjh_noticeuser"); | ||||
|             if(userinfo != null){ | ||||
|                 //根据清账单id和创建人id判断清账明细单是否已生成 | ||||
|                 qFilter = new QFilter("shjh_clearbillid", QCP.equals, prinfo.getString("id")); | ||||
|                 qFilter.and("creator", QCP.equals, userinfo.getLong("id")); | ||||
|                 detailinfo = BusinessDataServiceHelper.loadSingle(entityName, qFilter.toArray()); | ||||
|                 if (detailinfo != null) { | ||||
|                     //发送清账明细单的OA待办 | ||||
|                     JhzjUtils.handleOA(detailinfo, "0", "0"); | ||||
|                 } | ||||
|             }else{ | ||||
|                 //根据客户、公司、是否可用找到对应的被通知人员(可能多个) | ||||
|                 qFilter = new QFilter("enable", QCP.equals, "1"); | ||||
|                 qFilter.and("shjh_customer", QCP.equals, prinfo.getDynamicObject("shjh_customer").getLong("id")); | ||||
|                 qFilter.and("shjh_org", QCP.equals, prinfo.getDynamicObject("org").getLong("id")); | ||||
|                 pzbs = BusinessDataServiceHelper.load(pzbName, "id", qFilter.toArray(), "modifytime desc"); | ||||
|                 if (pzbs.length == 0) { | ||||
|                     //更新清账单下推明细单结果 | ||||
|                     addErrorInfo(prinfo,"根据结构性清账客户映射表未找到对应通知人,无法发送OA待办"); | ||||
|                     continue; | ||||
|                 } | ||||
|                 pzbinfo = BusinessDataServiceHelper.loadSingle(pzbs[0].getLong("id"), pzbName); | ||||
|                 users = pzbinfo.getDynamicObjectCollection("shjh_users"); | ||||
|                 for (DynamicObject user : users) { | ||||
|                     userinfo = user.getDynamicObject("fbasedataid");//fbasedataid | ||||
|                     //根据清账单id和创建人id判断清账明细单是否已生成 | ||||
|                     qFilter = new QFilter("shjh_clearbillid", QCP.equals, prinfo.getString("id")); | ||||
|                     qFilter.and("creator", QCP.equals, userinfo.getLong("id")); | ||||
|                     detailinfo = BusinessDataServiceHelper.loadSingle(entityName, qFilter.toArray()); | ||||
|                     if (detailinfo != null) { | ||||
|                         //发送清账明细单的OA待办 | ||||
|                         JhzjUtils.handleOA(detailinfo, "0", "0"); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             //处理完成提示 | ||||
|             this.operationResult.addSuccessPkId(prinfo.getPkValue()); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | @ -599,6 +599,7 @@ public class RecBillSaveOperation extends AbstractOperationServicePlugIn impleme | |||
|      */ | ||||
|     private void carryCustomerRule(DynamicObject entry,DynamicObject bill,String oppunit,Long companyId){ | ||||
|         //1.先看取映射表按钮是否打开,打开——>取映射表中客户 | ||||
|         //20250704 经过和建彪沟通先注释根据标记来判断的代码 | ||||
| //        boolean shjhEGetcustomer = entry.getBoolean("shjh_e_getcustomer"); //取规则得映射表客户标记 | ||||
| //        if (shjhEGetcustomer) { | ||||
|             QFilter qFilter = new QFilter("shjh_dfhm", QCP.equals, oppunit); | ||||
|  |  | |||
|  | @ -54,7 +54,9 @@ public class QuerySapCreatePayApplyTask extends AbstractTask { | |||
|         int daysBefore = Integer.parseInt(lq1);//临期_前 | ||||
|         int daysAfter = Integer.parseInt(lq);//临期_后 | ||||
|         int totalDays = daysBefore + daysAfter;//总天数,后面按照每30天调用一次接口 | ||||
|         //计算按照30天为一个循环,需要循环的次数 | ||||
|         int callInterval = 30; // 调用间隔天数 | ||||
|         // 计算调用次数(向上取整) | ||||
|         int callCount = (int) Math.ceil((double) totalDays / callInterval); | ||||
| 
 | ||||
|         // 计算开始日期(临期_前表示今天之前的天数) | ||||
|         LocalDate startDate = currentDate; | ||||
|  | @ -357,7 +359,7 @@ public class QuerySapCreatePayApplyTask extends AbstractTask { | |||
|                         ap_payapply_entry.set("e_bebank", bank);//开户银行 | ||||
|                         ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称 | ||||
|                         ispp = true; | ||||
|                     }else if(!EsbUtils.isEmpty(assacct) && bankentrys.size() > 1){ | ||||
|                     }else if(!EsbUtils.isEmpty(assacct)){ | ||||
|                         for (DynamicObject bankentry : bankentrys) { | ||||
|                             if (assacct.equals(bankentry.getString("shjh_banktype"))) { | ||||
|                                 String bankaccount = bankentry.getString("bankaccount"); | ||||
|  |  | |||
|  | @ -730,7 +730,7 @@ public class ApplyAdjustBillControler { | |||
|                     ap_payapply_entry.set("e_bebank", bank);//开户银行 | ||||
|                     ap_payapply_entry.set("shjh_asstactrealname", accountname);//账户名称 | ||||
|                     ispp = true; | ||||
|                 }else if(!EsbUtils.isEmpty(assacct) && bankentrys.size() > 1){ | ||||
|                 }else if(!EsbUtils.isEmpty(assacct)){ | ||||
|                     for (DynamicObject bankentry : bankentrys) { | ||||
|                         if (assacct.equals(bankentry.getString("shjh_banktype"))) { | ||||
|                             String bankaccount = bankentry.getString("bankaccount"); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue