|
@@ -3,8 +3,10 @@ package fi.er.opplugin;
|
|
|
import com.alibaba.druid.util.StringUtils;
|
|
|
import fi.cas.common.SettlementStatusEnum;
|
|
|
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.exception.KDBizException;
|
|
|
import kd.bos.orm.query.QCP;
|
|
|
import kd.bos.orm.query.QFilter;
|
|
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
|
@@ -38,6 +40,25 @@ public class PublicreimburOpPlugin extends AbstractOperationServicePlugIn {
|
|
|
info.set("nckd_unsettleamount",totalUnsettleamount);
|
|
|
info.set("nckd_settleamount",BigDecimal.ZERO);
|
|
|
info.set("nckd_settlestatus", SettlementStatusEnum.未结算.getValue());
|
|
|
+
|
|
|
+ //反写实物卡片清单
|
|
|
+ if (info.getDynamicObjectCollection("nckd_realcard_list") != null ) {
|
|
|
+ List<String > codeList = new ArrayList<>();
|
|
|
+ for (DynamicObject entryentity : info.getDynamicObjectCollection("nckd_realcard_list")) {
|
|
|
+ //取当前循环付款明细分录的源单分录id
|
|
|
+ String cardCode = entryentity.getString("nckd_card_code");
|
|
|
+ codeList.add(cardCode);
|
|
|
+ }
|
|
|
+ //查询实物卡片分录数据,如果查询到数据则不能保存该报销单
|
|
|
+ QFilter filter = new QFilter("number", QCP.in,codeList);
|
|
|
+ DynamicObject[] cardObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter});
|
|
|
+ for (int j = 0; j < cardObjects.length; j++) {
|
|
|
+ DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(cardObjects[i].getPkValue(), cardObjects[i].getDynamicObjectType().getName());
|
|
|
+ //资产报账单审核通过后,实物卡片清单标记为1
|
|
|
+ cardInfo.set("nckd_flag", "1");
|
|
|
+ SaveServiceHelper.save(new DynamicObject[]{cardInfo});
|
|
|
+ }
|
|
|
+ }
|
|
|
SaveServiceHelper.save(new DynamicObject[]{info});
|
|
|
} else if (StringUtils.equals(e.getOperationKey(),"unaudit")) {
|
|
|
//当前单头数据包
|
|
@@ -48,41 +69,43 @@ public class PublicreimburOpPlugin extends AbstractOperationServicePlugIn {
|
|
|
}
|
|
|
info.set("nckd_unsettleamount",BigDecimal.ZERO);
|
|
|
info.set("nckd_settlestatus", null);
|
|
|
+
|
|
|
+ //反审核反写实物卡片清单
|
|
|
+ if (info.getDynamicObjectCollection("nckd_realcard_list") != null ) {
|
|
|
+ List<String > codeList = new ArrayList<>();
|
|
|
+ for (DynamicObject entryentity : info.getDynamicObjectCollection("nckd_realcard_list")) {
|
|
|
+ //取当前循环付款明细分录的源单分录id
|
|
|
+ String cardCode = entryentity.getString("nckd_card_code");
|
|
|
+ codeList.add(cardCode);
|
|
|
+ }
|
|
|
+ //查询实物卡片分录数据,如果查询到数据则不能保存该报销单
|
|
|
+ QFilter filter = new QFilter("number", QCP.in,codeList);
|
|
|
+ DynamicObject[] cardObjects = BusinessDataServiceHelper.load("nckd_fa_card_real_list","id",new QFilter[] {filter});
|
|
|
+ for (int j = 0; j < cardObjects.length; j++) {
|
|
|
+ DynamicObject cardInfo = BusinessDataServiceHelper.loadSingle(cardObjects[i].getPkValue(), cardObjects[i].getDynamicObjectType().getName());
|
|
|
+ //资产报账单审核通过后,实物卡片清单标记为1
|
|
|
+ cardInfo.set("nckd_flag", "0");
|
|
|
+ SaveServiceHelper.save(new DynamicObject[]{cardInfo});
|
|
|
+ }
|
|
|
+ }
|
|
|
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});
|
|
|
+ Long fid = info.getLong("id");
|
|
|
+ for (DynamicObject entryentity : info.getDynamicObjectCollection("assetentry")) {
|
|
|
+ DynamicObjectCollection dynamicObjectCollection = entryentity.getDynamicObjectCollection("nckd_real_card");
|
|
|
+ for(DynamicObject object : dynamicObjectCollection) {
|
|
|
+ Long id = (Long) object.get(2);
|
|
|
+ String listId = String.valueOf(id);
|
|
|
+ //查询报销单
|
|
|
+ QFilter bxFilter = new QFilter("nckd_card_list_id", QCP.like,listId);
|
|
|
+ bxFilter.and("id", QCP.not_equals, fid);
|
|
|
+ DynamicObject[] bxDynamicObjects = BusinessDataServiceHelper.load("er_publicreimbursebill","id",new QFilter[] {bxFilter});
|
|
|
+ if (bxDynamicObjects.length > 0) {
|
|
|
+ throw new KDBizException("实物卡片清单已经生成资产清单,请重新选择!");
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|