|
@@ -0,0 +1,113 @@
|
|
|
+package fi.em.opplugin;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import kd.bos.dataentity.entity.DynamicObject;
|
|
|
+import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
|
|
+import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
|
|
|
+import kd.bos.entity.plugin.args.EndOperationTransactionArgs;
|
|
|
+import kd.bos.orm.query.QCP;
|
|
|
+import kd.bos.orm.query.QFilter;
|
|
|
+import kd.bos.servicehelper.BusinessDataServiceHelper;
|
|
|
+import kd.bos.servicehelper.operation.SaveServiceHelper;
|
|
|
+import kd.fi.cas.helper.CasBotpHelper;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+
|
|
|
+public class BusinessProcessingSaveOpPlugin extends AbstractOperationServicePlugIn {
|
|
|
+// @Override
|
|
|
+// public void beginOperationTransaction(BeginOperationTransactionArgs e) {
|
|
|
+// //获取当前操作单据数组
|
|
|
+// DynamicObject[] dynamicObjects = e.getDataEntities();
|
|
|
+// for (int i = 0; i < dynamicObjects.length; i++) {
|
|
|
+// JSONObject object = new JSONObject();
|
|
|
+// //当前单头数据包
|
|
|
+// DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
|
|
|
+// String detailtype = info.getString("nckd_detailtype");
|
|
|
+// if("B".equals(detailtype)){
|
|
|
+// for (DynamicObject entryentity : info.getDynamicObjectCollection("nckd_entryentity2")) {
|
|
|
+// String nckdBigintfield = entryentity.getString("nckd_bigintfield");
|
|
|
+// CasBotpHelper.saveRelation("ap_finapbill", Long.valueOf(nckdBigintfield), "nckd_ywcld", info.getLong("id"));
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void endOperationTransaction(EndOperationTransactionArgs e) {
|
|
|
+ super.endOperationTransaction(e);
|
|
|
+ //获取当前操作单据数组
|
|
|
+ DynamicObject[] dynamicObjects = e.getDataEntities();
|
|
|
+ for (int i = 0; i < dynamicObjects.length; i++) {
|
|
|
+ JSONObject object = new JSONObject();
|
|
|
+ //当前单头数据包
|
|
|
+ DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
|
|
|
+ String detailtype = info.getString("nckd_detailtype");
|
|
|
+ if("A".equals(detailtype)){
|
|
|
+ for (DynamicObject entryentity : info.getDynamicObjectCollection("nckd_entryentity1")) {
|
|
|
+ String nckdcysnumber = entryentity.getString("nckd_cysnumber");//财务应收单编码
|
|
|
+ BigDecimal nckdCyscxbalance = entryentity.getBigDecimal("nckd_cyscxbalance");//冲销金额
|
|
|
+ //构建查询应收挂账单参数
|
|
|
+ QFilter nckd_orgamountFilter = new QFilter("id", QCP.equals,nckdcysnumber);
|
|
|
+ DynamicObject[] nckd_cas_arbill = BusinessDataServiceHelper.load("ar_finarbill", "id", new QFilter[]{nckd_orgamountFilter});
|
|
|
+ DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(nckd_cas_arbill[0].getPkValue(), nckd_cas_arbill[0].getDynamicObjectType().getName());
|
|
|
+ BigDecimal unsettleamount = dynamicObject.getBigDecimal("unsettleamount");//未结算金额
|
|
|
+ BigDecimal settleamount = dynamicObject.getBigDecimal("settleamount");//已结算金额
|
|
|
+ BigDecimal recamount = dynamicObject.getBigDecimal("recamount");//应收金额
|
|
|
+ unsettleamount=unsettleamount.subtract(nckdCyscxbalance);//计算后反写未结算金额
|
|
|
+ settleamount=settleamount.add(nckdCyscxbalance);//已结算+本次冲销金额
|
|
|
+ settleamount=recamount.subtract(settleamount);//计算后反写已结算金额
|
|
|
+ //set反写字段
|
|
|
+ dynamicObject.set("unsettleamount",unsettleamount);//财务应收单未结算金额
|
|
|
+ dynamicObject.set("unsettlelocalamt",unsettleamount);//财务应收单未结算金额本位币
|
|
|
+ dynamicObject.set("unverifyamount",unsettleamount);//财务应收单未核销金额本位币
|
|
|
+ dynamicObject.set("settleamount",settleamount);//财务应收单已结算金额
|
|
|
+ dynamicObject.set("settlelocalamt",settleamount);//财务应收单已结算金额本位币
|
|
|
+ SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
|
|
|
+ }
|
|
|
+// for (DynamicObject entryentity : info.getDynamicObjectCollection("nckd_entryentity3")) {
|
|
|
+// String nckdpzhthth = entryentity.getString("nckd_pzhthth");//租赁合同编号
|
|
|
+// BigDecimal nckdCyscxbalance = entryentity.getBigDecimal("nckd_pzhtcxbalance");//冲销金额
|
|
|
+// //构建查询应收挂账单参数
|
|
|
+// QFilter nckd_orgamountFilter = new QFilter("number", QCP.equals,nckdpzhthth);
|
|
|
+// DynamicObject[] nckd_cas_arbill = BusinessDataServiceHelper.load("fa_lease_contract", "id", new QFilter[]{nckd_orgamountFilter});
|
|
|
+// DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(nckd_cas_arbill[0].getPkValue(), nckd_cas_arbill[0].getDynamicObjectType().getName());
|
|
|
+// BigDecimal unsettleamount = dynamicObject.getBigDecimal("unsettleamount");//未结算金额
|
|
|
+// BigDecimal settleamount = dynamicObject.getBigDecimal("settleamount");//已结算金额
|
|
|
+// BigDecimal recamount = dynamicObject.getBigDecimal("recamount");//应收金额
|
|
|
+// unsettleamount=unsettleamount.subtract(nckdCyscxbalance);//计算后反写未结算金额
|
|
|
+// settleamount=settleamount.add(nckdCyscxbalance);//已结算+本次冲销金额
|
|
|
+// settleamount=recamount.subtract(settleamount);//计算后反写已结算金额
|
|
|
+// //set反写字段
|
|
|
+// dynamicObject.set("unsettleamount",unsettleamount);//财务应收单未结算金额
|
|
|
+// dynamicObject.set("unsettlelocalamt",unsettleamount);//财务应收单未结算金额本位币
|
|
|
+// dynamicObject.set("unverifyamount",unsettleamount);//财务应收单未核销金额本位币
|
|
|
+// dynamicObject.set("settleamount",settleamount);//财务应收单已结算金额
|
|
|
+// dynamicObject.set("settlelocalamt",settleamount);//财务应收单已结算金额本位币
|
|
|
+// SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
|
|
|
+// }
|
|
|
+ } else if ("B".equals(detailtype)){
|
|
|
+ for (DynamicObject entryentity : info.getDynamicObjectCollection("nckd_entryentity2")) {
|
|
|
+ String nckdBigintfield = entryentity.getString("nckd_bigintfield");//财务应付单id
|
|
|
+ BigDecimal nckdCyscxbalance = entryentity.getBigDecimal("nckd_cyfcxbalance");//冲销金额
|
|
|
+ //构建查询应收挂账单参数
|
|
|
+ QFilter nckd_orgamountFilter = new QFilter("id", QCP.equals,Long.valueOf(nckdBigintfield));
|
|
|
+ DynamicObject[] nckd_cas_arbill = BusinessDataServiceHelper.load("ap_finapbill", "id", new QFilter[]{nckd_orgamountFilter});
|
|
|
+ DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(nckd_cas_arbill[0].getPkValue(), nckd_cas_arbill[0].getDynamicObjectType().getName());
|
|
|
+ BigDecimal unsettleamount = dynamicObject.getBigDecimal("unsettleamount");//未结算金额
|
|
|
+ BigDecimal settleamount = dynamicObject.getBigDecimal("settleamount");//已结算金额
|
|
|
+ BigDecimal recamount = dynamicObject.getBigDecimal("recamount");//应收金额
|
|
|
+ unsettleamount=unsettleamount.subtract(nckdCyscxbalance);//计算后反写未结算金额
|
|
|
+ settleamount=settleamount.add(nckdCyscxbalance);//已结算+本次冲销金额
|
|
|
+ settleamount=recamount.subtract(settleamount);//计算后反写已结算金额
|
|
|
+ //set反写字段
|
|
|
+ dynamicObject.set("unsettleamount",unsettleamount);//财务应收单未结算金额
|
|
|
+ dynamicObject.set("unsettlelocalamt",unsettleamount);//财务应收单未结算金额本位币
|
|
|
+ dynamicObject.set("unverifyamount",unsettleamount);//财务应收单未核销金额本位币
|
|
|
+ dynamicObject.set("settleamount",settleamount);//财务应收单已结算金额
|
|
|
+ dynamicObject.set("settlelocalamt",settleamount);//财务应收单已结算金额本位币
|
|
|
+ SaveServiceHelper.save(new DynamicObject[]{dynamicObject});
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|