Jelajahi Sumber

收款处理值更新事件更新关联信息

wuxiaobing 4 hari lalu
induk
melakukan
ef7450d720

+ 64 - 0
code/wnq/nckd-wnq01-wnq-scm/src/main/java/nckd/poc602/plugin/form/RecBillFormPlugin.java

@@ -0,0 +1,64 @@
+package nckd.poc602.plugin.form;
+
+import java.math.BigDecimal;
+
+import kd.bos.bill.AbstractBillPlugIn;
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
+import kd.bos.entity.datamodel.events.ChangeData;
+import kd.bos.entity.datamodel.events.PropertyChangedArgs;
+import kd.bos.form.field.events.BeforeF7SelectEvent;
+import kd.bos.form.field.events.BeforeF7SelectListener;
+import kd.bos.orm.query.QCP;
+import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
+
+/**
+ * @author xiaobing_wu
+ * @date 2025-4-25
+ */
+public class RecBillFormPlugin extends AbstractBillPlugIn implements BeforeF7SelectListener {
+
+    @Override
+    public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) {
+
+    }
+
+    @Override
+    public void propertyChanged(PropertyChangedArgs e) {
+        super.propertyChanged(e);
+
+        String key = e.getProperty().getName();
+
+        //核心单据号
+        if("e_corebillno".equals(key) || "nckd_payname".equals(key)) {
+            ChangeData[] changeValue = e.getChangeSet();
+            int changeRow = changeValue[0].getRowIndex();
+            String e_corebillno = (String) this.getModel().getValue("e_corebillno", changeRow);
+            QFilter qf = new QFilter("billno",QCP.equals,e_corebillno);
+            DynamicObject xsdd = BusinessDataServiceHelper.loadSingle("sm_salorder", "id,nckd_refbillfield,recplanentry.r_itemname,recplanentry.r_recadvanceamount,recplanentry.r_recamount", qf.toArray());
+            if(xsdd != null) {
+            	DynamicObject xsht = xsdd.getDynamicObject("nckd_refbillfield");
+            	if(xsht != null) {
+            		this.getView().getModel().setValue("nckd_refbillfield1", xsht, changeRow);
+            	}
+            	
+            	Object nckd_paynameobj = this.getModel().getValue("nckd_payname", changeRow);
+            	DynamicObject nckd_payname = null;
+            	if(nckd_paynameobj != null) {
+            		nckd_payname = (DynamicObject) nckd_paynameobj;
+            		DynamicObjectCollection plans = xsdd.getDynamicObjectCollection("recplanentry");
+            		for(DynamicObject plan : plans) {
+            			DynamicObject r_itemname = plan.getDynamicObject("r_itemname");
+            			BigDecimal r_recadvanceamount = plan.getBigDecimal("r_recadvanceamount");
+            			BigDecimal r_recamount = plan.getBigDecimal("r_recamount");
+            			if(r_itemname != null && r_itemname.getPkValue().equals(nckd_payname.getPkValue())) {
+            				this.getView().getModel().setValue("e_receivableamt", r_recadvanceamount.subtract(r_recamount), changeRow);
+            				break;
+            			}
+            		}
+            	}
+            }
+        }
+    }
+}