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) { // //获取当前操作单据数组11 // 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("billno", 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 nckdamountfield = dynamicObject.getBigDecimal("nckd_amountfield");//已收款金额 BigDecimal nckdamountfield1 = dynamicObject.getBigDecimal("nckd_amountfield1");//收款余额 nckdamountfield=nckdamountfield.add(nckdCyscxbalance);//计算后反写已收款金额 nckdamountfield1=nckdamountfield1.subtract(nckdCyscxbalance);//收款余额+本次冲销金额 //set反写字段 dynamicObject.set("nckd_amountfield",nckdamountfield);//财务应收单未结算金额 dynamicObject.set("nckd_amountfield1",nckdamountfield1);//财务应收单未结算金额本位币 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,supplier.number,", 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 pricetaxtotal = dynamicObject.getBigDecimal("pricetaxtotal");//应收金额 unsettleamount=unsettleamount.subtract(nckdCyscxbalance);//计算后反写未结算金额 settleamount=settleamount.add(nckdCyscxbalance);//已结算+本次冲销金额 settleamount=pricetaxtotal.subtract(settleamount);//计算后反写已结算金额 //set反写字段 dynamicObject.set("unsettleamount",unsettleamount);//财务应收单未结算金额 dynamicObject.set("unsettleamountbase",unsettleamount);//财务应收单未结算金额本位币 dynamicObject.set("unverifyamount",unsettleamount);//财务应收单未核销金额本位币 dynamicObject.set("settleamount",settleamount);//财务应收单已结算金额 dynamicObject.set("settleamountbase",settleamount);//财务应收单已结算金额本位币 SaveServiceHelper.save(new DynamicObject[]{dynamicObject}); } } } } }