12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- package fi.er.opplugin;
- import com.alibaba.druid.util.StringUtils;
- import fi.cas.common.SettlementStatusEnum;
- import kd.bos.dataentity.entity.DynamicObject;
- 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.ArrayList;
- import java.util.List;
- //报销单
- public class PublicreimburOpPlugin extends AbstractOperationServicePlugIn {
- private static String ap_finapbill = "ap_finapbill"; //应付挂账单字段
- @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());
- BigDecimal totalUnsettleamount = BigDecimal.ZERO;
- //循环收款信息分录
- for (DynamicObject entryentity : info.getDynamicObjectCollection("accountentry")) {
- //取当前分录的收款金额
- BigDecimal orireceiveamount = entryentity.getBigDecimal("orireceiveamount");
- //未结算金额=收款金额
- entryentity.set("nckd_unsettleamount_et",orireceiveamount);
- entryentity.set("nckd_settleamount_et",BigDecimal.ZERO);
- totalUnsettleamount = totalUnsettleamount.add(orireceiveamount);
- }
- info.set("nckd_unsettleamount",totalUnsettleamount);
- info.set("nckd_settleamount",BigDecimal.ZERO);
- info.set("nckd_settlestatus", SettlementStatusEnum.未结算.getValue());
- SaveServiceHelper.save(new DynamicObject[]{info});
- } else if (StringUtils.equals(e.getOperationKey(),"unaudit")) {
- //当前单头数据包
- DynamicObject info = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
- //循环收款信息分录
- for (DynamicObject entryentity : info.getDynamicObjectCollection("accountentry")) {
- entryentity.set("nckd_unsettleamount_et",BigDecimal.ZERO);
- }
- info.set("nckd_unsettleamount",BigDecimal.ZERO);
- info.set("nckd_settlestatus", null);
- SaveServiceHelper.save(new DynamicObject[]{info});
- } else if (StringUtils.equals(e.getOperationKey(),"save")) {
- List<DynamicObject> dynamicObjectList = new ArrayList<>();
- //获取当前页面数据
- DynamicObject info = dynamicObjects[i];
- //获取当前单据数据库保存数据
- DynamicObject saveInfo = BusinessDataServiceHelper.loadSingle(dynamicObjects[i].getPkValue(), dynamicObjects[i].getDynamicObjectType().getName());
- if (saveInfo == null) {
- DynamicObject apfinapbill = info.getDynamicObject("nckd_apfinapbill");
- if (apfinapbill != null) {
- //所选应付挂帐单更新标识
- Long id = apfinapbill.getLong("id");
- QFilter gzFilter = new QFilter("id", QCP.equals,id);
- DynamicObject[] gzDynamicObjects = BusinessDataServiceHelper.load(ap_finapbill,"id",new QFilter[] {gzFilter});
- DynamicObject gzInfo = BusinessDataServiceHelper.loadSingle(gzDynamicObjects[0].getPkValue(), gzDynamicObjects[0].getDynamicObjectType().getName());
- gzInfo.set("nckd_selectflag","1");
- SaveServiceHelper.save(new DynamicObject[]{gzInfo});
- }
- }else {
- DynamicObject apfinapbill = info.getDynamicObject("nckd_apfinapbill");
- DynamicObject saveApfinapbill = saveInfo.getDynamicObject("nckd_apfinapbill");
- Long oldId = saveApfinapbill.getLong("id");
- //释放原应付挂账单
- QFilter oldFilter = new QFilter("id", QCP.equals,oldId);
- DynamicObject[] oldDynamicObjects = BusinessDataServiceHelper.load(ap_finapbill,"id",new QFilter[] {oldFilter});
- DynamicObject oldInfo = BusinessDataServiceHelper.loadSingle(oldDynamicObjects[0].getPkValue(), oldDynamicObjects[0].getDynamicObjectType().getName());
- oldInfo.set("nckd_selectflag","");
- SaveServiceHelper.save(new DynamicObject[]{oldInfo});
- if (apfinapbill !=null) {
- Long id = apfinapbill.getLong("id");
- QFilter gzFilter = new QFilter("id", QCP.equals,id);
- DynamicObject[] gzDynamicObjects = BusinessDataServiceHelper.load(ap_finapbill,"id",new QFilter[] {gzFilter});
- DynamicObject gzInfo = BusinessDataServiceHelper.loadSingle(gzDynamicObjects[0].getPkValue(), gzDynamicObjects[0].getDynamicObjectType().getName());
- gzInfo.set("nckd_selectflag","1");
- SaveServiceHelper.save(new DynamicObject[]{gzInfo});
- }
- }
- }
- }
- }
- }
|