| 
					
				 | 
			
			
				@@ -0,0 +1,145 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+package fi.em.formPlugin; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import kd.bos.dataentity.entity.DynamicObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import kd.bos.dataentity.entity.DynamicObjectCollection; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import kd.bos.entity.ExtendedDataEntity; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import kd.bos.entity.datamodel.events.PropertyChangedArgs; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import kd.bos.form.events.AfterDoOperationEventArgs; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import kd.bos.list.plugin.AbstractListPlugin; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import kd.bos.orm.query.QCP; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import kd.bos.orm.query.QFilter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import kd.bos.servicehelper.BusinessDataServiceHelper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import kd.bos.servicehelper.botp.BFTrackerServiceHelper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import kd.bos.servicehelper.operation.SaveServiceHelper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import kd.sdk.plugin.Plugin; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import java.util.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @author cjz 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @date 2024/8/28 15:05 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ * @description:代发处理单支付状态变更后将值反写薪酬计提单 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+public class AgentpaybillFormPlugin extends AbstractListPlugin implements Plugin { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static String nckd_cas_agentpaybill="nckd_cas_agentpaybill";//代发处理单标识 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static String nckd_paystate="nckd_paystate";//支付状态标识 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static String nckd_salarydistribute="nckd_salarydistribute";//薪酬计提发放单标识 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    //操作后刷新字段 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void afterDoOperation(AfterDoOperationEventArgs arg){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        super.afterDoOperation(arg); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String operateKey = arg.getOperateKey(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //关闭付款按钮标识 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String closepay="closepay"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //付款给前置按钮标识 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String payforfront="payforfront"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //实时反写支付状态字段给上游薪酬计提 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if(closepay.equals(operateKey)||payforfront.equals(operateKey)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            this.getView().updateView(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //获取当前单据模型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            DynamicObject dynamicObject=this.getModel().getDataEntity(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //获取代发分录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            DynamicObjectCollection entryCollection=dynamicObject.getDynamicObjectCollection("entry"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //获取源单id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Long sourcebillid=entryCollection.get(0).getLong("sourcebillid"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //支付状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String nckd_paystate=dynamicObject.getString("nckd_paystate"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            QFilter filter=new QFilter("id",QCP.equals,sourcebillid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //获取薪酬计提 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            DynamicObject agentpaybill=BusinessDataServiceHelper.loadSingle(nckd_salarydistribute,"id,nckd_paystate",new QFilter[]{filter}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            agentpaybill.set("nckd_paystate",nckd_paystate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            SaveServiceHelper.save(new DynamicObject[] {agentpaybill}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //点击关闭付款按钮后,反写分录字段到上游单据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (closepay.equals(operateKey)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //获取当前单据模型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            DynamicObject dynamicObject=this.getModel().getDataEntity(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //获取代发分录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            DynamicObjectCollection entryCollection=dynamicObject.getDynamicObjectCollection("entry"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //获取源单id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Long sourcebillid=entryCollection.get(0).getLong("sourcebillid"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            QFilter filter=new QFilter("id",QCP.equals,sourcebillid); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            DynamicObject agentpaybill=BusinessDataServiceHelper 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .loadSingle(nckd_salarydistribute, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            "id,nckd_entrytype,nckd_staffentry,nckd_earlyretiredentry,nckd_retireentry,nckd_salaryentry" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    ",nckd_salaryentryre,nckd_se_success,nckd_se_sysfeedback,nckd_ee_success,nckd_ee_sysfeedback,nckd_re_success" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    ",nckd_re_sysfeedback,nckd_sae_success,nckd_sae_sysfeedback,nckd_see_success,nckd_see_sysfeedback" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            ,new QFilter[]{filter}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //薪酬计提单分录类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String nckd_entrytype=agentpaybill.getString("nckd_entrytype"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //薪酬计提单分录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if ("A".equals(nckd_entrytype)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //一般员工分录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                DynamicObjectCollection nckd_staffentry=agentpaybill.getDynamicObjectCollection("nckd_staffentry"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (int a=0;a<nckd_staffentry.size();a++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    nckd_staffentry.get(a).set("nckd_se_success",entryCollection.get(a).getBoolean("e_issuccess")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    nckd_staffentry.get(a).set("nckd_se_sysfeedback",entryCollection.get(a).getString("bankreturnmsg")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if ("B".equals(nckd_entrytype)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //内退分录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                DynamicObjectCollection nckd_earlyretiredentry=agentpaybill.getDynamicObjectCollection("nckd_earlyretiredentry"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (int b=0;b<nckd_earlyretiredentry.size();b++) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    nckd_earlyretiredentry.get(b).set("nckd_ee_success",entryCollection.get(b).getBoolean("e_issuccess")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    nckd_earlyretiredentry.get(b).set("nckd_ee_sysfeedback",entryCollection.get(b).getString("bankreturnmsg")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if ("C".equals(nckd_entrytype)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //退休分录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                DynamicObjectCollection nckd_retireentry=agentpaybill.getDynamicObjectCollection("nckd_retireentry"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (int c=0;c<nckd_retireentry.size();c++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    nckd_retireentry.get(c).set("nckd_re_success",entryCollection.get(c).getBoolean("e_issuccess")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    nckd_retireentry.get(c).set("nckd_re_sysfeedback",entryCollection.get(c).getString("bankreturnmsg")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if ("D".equals(nckd_entrytype)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //人力薪酬分录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                DynamicObjectCollection nckd_salaryentry=agentpaybill.getDynamicObjectCollection("nckd_salaryentry"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (int d=0;d<nckd_salaryentry.size();d++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    nckd_salaryentry.get(d).set("nckd_sae_success",entryCollection.get(d).getBoolean("e_issuccess")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    nckd_salaryentry.get(d).set("nckd_sae_sysfeedback",entryCollection.get(d).getString("bankreturnmsg")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if ("E".equals(nckd_entrytype)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                //人力薪酬内退分录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                DynamicObjectCollection nckd_salaryentry=agentpaybill.getDynamicObjectCollection("nckd_salaryentryre"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                for (int d=0;d<nckd_salaryentry.size();d++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    nckd_salaryentry.get(d).set("nckd_see_success",entryCollection.get(d).getBoolean("e_issuccess")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    nckd_salaryentry.get(d).set("nckd_see_sysfeedback",entryCollection.get(d).getString("bankreturnmsg")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //反写后保存 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            SaveServiceHelper.save(new DynamicObject[] {agentpaybill}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    public void propertyChanged(PropertyChangedArgs e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        super.beforePropertyChanged(e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        String name=e.getProperty().getName(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        //支付状态发生改变 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (nckd_paystate.equals(name)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //获取当前单据模型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            DynamicObject dynamicObject=this.getModel().getDataEntity(true); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //获取代发分录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            DynamicObjectCollection entryCollection=dynamicObject.getDynamicObjectCollection("entry"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //获取源单id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Long id=entryCollection.get(0).getLong("sourcebillid"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //当前支付状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            String paystate=dynamicObject.getString(nckd_paystate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            QFilter filter=new QFilter("id",QCP.equals,id); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            DynamicObject agentpaybill=BusinessDataServiceHelper 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .loadSingle(nckd_salarydistribute,"id,nckd_paystate",new QFilter[]{filter}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //反写薪酬计提支付状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            agentpaybill.set("nckd_paystate",paystate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //获取代发单代发分录中字段信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            SaveServiceHelper.save(new DynamicObject[] {agentpaybill}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |