ソースを参照

收款处理审核/反审核后更新销售合同已收金额

wuxiaobing 4 日 前
コミット
ada84c3ddd

+ 37 - 4
code/wnq/nckd-wnq01-wnq-scm/src/main/java/nckd/poc602/plugin/operate/RecBillAuditOperationServicePlugIn.java

@@ -44,9 +44,8 @@ public class RecBillAuditOperationServicePlugIn extends AbstractOperationService
     private void updateSaleOrderInfo(AfterOperationArgs e, DynamicObject[] payBills, Boolean iswriteback) {
 		Set<DynamicObject> scs = new HashSet<>();
 		List<Object> xsddbillnos = new ArrayList<>();
-		Boolean existError = false;
-		
-		for(DynamicObject payBill : payBills) {
+		List<Object> xshtid = new ArrayList<>();
+ 		for(DynamicObject payBill : payBills) {
 			DynamicObjectCollection entrys = payBill.getDynamicObjectCollection("entry");
 			for(DynamicObject entry : entrys) {
 				String e_corebilltype = entry.getString("e_corebilltype");
@@ -54,6 +53,11 @@ public class RecBillAuditOperationServicePlugIn extends AbstractOperationService
 				if("sm_salorder".equals(e_corebilltype) && StringUtils.isNotBlank(e_corebillno)) {
 					xsddbillnos.add(e_corebillno);
 				}
+				DynamicObject nckd_refbillfield1 = entry.getDynamicObject("nckd_refbillfield1");
+				if(nckd_refbillfield1 != null) {
+					Object nckd_refbillid = nckd_refbillfield1.getPkValue();
+					xshtid.add(nckd_refbillid);
+				}
 			}
 		}
 		
@@ -97,10 +101,39 @@ public class RecBillAuditOperationServicePlugIn extends AbstractOperationService
 				}
 			}
 
-			if(!existError && !scs.isEmpty()) {
+			if(!scs.isEmpty()) {
 				SaveServiceHelper.update(scs.toArray(new DynamicObject[0]));
 			}
 		}
+		Set<DynamicObject> xshts = new HashSet<>();
+		if(!xshtid.isEmpty()) {
+			QFilter qf = new QFilter("id",QCP.in,xshtid);
+			DynamicObject[] xsddarrays = BusinessDataServiceHelper.load("conm_salcontract", "id,billno,receiptallamount", qf.toArray());
+			for(DynamicObject xsddarray : xsddarrays) {
+				for(DynamicObject payBill : payBills) {
+					DynamicObjectCollection entrys = payBill.getDynamicObjectCollection("entry");
+					for(DynamicObject entry : entrys) {
+						BigDecimal e_receivableamt = entry.getBigDecimal("e_actamt");//应收金额->实收金额
+						DynamicObject nckd_refbillfield1 = entry.getDynamicObject("nckd_refbillfield1");//销售合同
+						if(nckd_refbillfield1 != null && xsddarray.getPkValue().equals(nckd_refbillfield1.getPkValue())) {
+							BigDecimal receiptallamount = xsddarray.getBigDecimal("receiptallamount");//已收金额
+							if(iswriteback) {
+								BigDecimal receiptallamountNew = receiptallamount.add(e_receivableamt);
+								xsddarray.set("receiptallamount", receiptallamountNew);
+							}else {
+								BigDecimal receiptallamountNew = receiptallamount.subtract(e_receivableamt);
+								xsddarray.set("receiptallamount", receiptallamountNew);
+							}
+							xshts.add(xsddarray);
+						}
+					}
+				}
+			}
+		}
+		
+		if(!xshts.isEmpty()) {
+			SaveServiceHelper.update(xshts.toArray(new DynamicObject[0]));
+		}
     }
     
     @Override