|
@@ -0,0 +1,84 @@
|
|
|
+package fi.ar.opplugin;
|
|
|
+
|
|
|
+import com.alibaba.druid.util.StringUtils;
|
|
|
+import kd.bos.dataentity.entity.DynamicObject;
|
|
|
+import kd.bos.dataentity.entity.DynamicObjectCollection;
|
|
|
+import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
|
|
+import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
|
|
|
+import kd.bos.orm.query.QCP;
|
|
|
+import kd.bos.orm.query.QFilter;
|
|
|
+import kd.bos.servicehelper.BusinessDataServiceHelper;
|
|
|
+import kd.bos.servicehelper.operation.SaveServiceHelper;
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.Iterator;
|
|
|
+
|
|
|
+public class ArBaddebtlossBillOpPlugin extends AbstractOperationServicePlugIn {
|
|
|
+ @Override
|
|
|
+ public void beginOperationTransaction(BeginOperationTransactionArgs e) {
|
|
|
+ //获取合同台账单据信息
|
|
|
+ DynamicObject[] dynamicObjects = e.getDataEntities();
|
|
|
+ for (int i = 0; i < dynamicObjects.length; i++) {
|
|
|
+ if (StringUtils.equals(e.getOperationKey(),"audit")) {
|
|
|
+ //当前单头数据包
|
|
|
+ DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
|
|
|
+ String billno = info.getString("billno");
|
|
|
+ Date bizDate = info.getDate("bizdate");
|
|
|
+ Long id = info.getLong("id");
|
|
|
+ BigDecimal amount = info.getBigDecimal("nckd_amountfield");
|
|
|
+ Long sourcebillid = info.getLong("sourcebillid");
|
|
|
+ if (sourcebillid != 0) {
|
|
|
+ //获取财务应收单
|
|
|
+ QFilter filter = new QFilter("id", QCP.equals, sourcebillid);
|
|
|
+ DynamicObject[] ardynamicObjects = BusinessDataServiceHelper.load("ar_finarbill","id", new QFilter[]{filter});
|
|
|
+ for (DynamicObject object : ardynamicObjects) {
|
|
|
+ DynamicObject arInfo = BusinessDataServiceHelper.loadSingle(object.getPkValue(), object.getDynamicObjectType().getName());
|
|
|
+ DynamicObjectCollection debtEntry = arInfo.getDynamicObjectCollection("nckd_debt_entry1");
|
|
|
+ Boolean flag = true;
|
|
|
+ for (DynamicObject debt : debtEntry) {
|
|
|
+ if (StringUtils.equals(debt.getString("nckd_debt_billno"), billno)) {
|
|
|
+ debt.set("nckd_debt_amount", amount);
|
|
|
+ flag = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (flag) {
|
|
|
+ DynamicObject entry1 = debtEntry.addNew();
|
|
|
+ entry1.set("nckd_debt_billno", billno);//付款处理单据编号
|
|
|
+ entry1.set("nckd_debt_id", id);//付款处理单据id
|
|
|
+ entry1.set("nckd_y_date1", bizDate);//付款金额
|
|
|
+ entry1.set("nckd_debt_amount", amount);//付款日期
|
|
|
+ }
|
|
|
+ SaveServiceHelper.save(new DynamicObject[]{arInfo});
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ } else if (StringUtils.equals(e.getOperationKey(),"unaudit")) {
|
|
|
+ //当前单头数据包
|
|
|
+ DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
|
|
|
+ String billno = info.getString("billno");
|
|
|
+ Date bizDate = info.getDate("bizdate");
|
|
|
+ Long id = info.getLong("id");
|
|
|
+ BigDecimal amount = info.getBigDecimal("nckd_amountfield");
|
|
|
+ Long sourcebillid = info.getLong("sourcebillid");
|
|
|
+ if (sourcebillid != 0) {
|
|
|
+ //获取财务应收单
|
|
|
+ QFilter filter = new QFilter("id", QCP.equals, sourcebillid);
|
|
|
+ DynamicObject[] ardynamicObjects = BusinessDataServiceHelper.load("ar_finarbill","id", new QFilter[]{filter});
|
|
|
+ for (DynamicObject object : ardynamicObjects) {
|
|
|
+ DynamicObject arInfo = BusinessDataServiceHelper.loadSingle(object.getPkValue(), object.getDynamicObjectType().getName());
|
|
|
+ DynamicObjectCollection debtEntry = arInfo.getDynamicObjectCollection("nckd_debt_entry1");
|
|
|
+ Iterator<DynamicObject> iterator = debtEntry.iterator();
|
|
|
+ while (iterator.hasNext()) {
|
|
|
+ DynamicObject debt = iterator.next();
|
|
|
+ if (StringUtils.equals(debt.getString("nckd_debt_billno"), billno)) {
|
|
|
+ iterator.remove();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ SaveServiceHelper.save(new DynamicObject[]{arInfo});
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|