Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
8117925d64
|
@ -0,0 +1,27 @@
|
|||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by FernFlower decompiler)
|
||||
//
|
||||
|
||||
package kd.ec.ecpf.opplugin;
|
||||
|
||||
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||
import kd.bos.entity.plugin.AddValidatorsEventArgs;
|
||||
import kd.bos.entity.plugin.PreparePropertysEventArgs;
|
||||
|
||||
public class PaymentApplyInvoiceValidateOp extends AbstractOperationServicePlugIn {
|
||||
public PaymentApplyInvoiceValidateOp() {
|
||||
}
|
||||
|
||||
public void onPreparePropertys(PreparePropertysEventArgs e) {
|
||||
e.getFieldKeys().add("entryentity");
|
||||
e.getFieldKeys().add("applyoftaxamount");
|
||||
e.getFieldKeys().add("subentryentity");
|
||||
e.getFieldKeys().add("invoice");
|
||||
e.getFieldKeys().add("applyinvoftaxamt");
|
||||
}
|
||||
|
||||
public void onAddValidators(AddValidatorsEventArgs e) {
|
||||
e.addValidator(new PaymentApplyInvoiceValidator());
|
||||
}
|
||||
}
|
|
@ -9,23 +9,29 @@ import java.math.BigDecimal;
|
|||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.resource.ResManager;
|
||||
import kd.bos.dataentity.utils.StringUtils;
|
||||
import kd.bos.entity.ExtendedDataEntity;
|
||||
import kd.bos.entity.validate.AbstractValidator;
|
||||
import kd.bos.logging.Log;
|
||||
import kd.bos.logging.LogFactory;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.QueryServiceHelper;
|
||||
import kd.ec.basedata.common.enums.BillStatusEnum;
|
||||
import zcgj.zcdev.zcdev.pr.plugin.form.MaterialInbFinaceConfirmeInvoicePlugin;
|
||||
|
||||
class PaymentApplyInvoiceValidator extends AbstractValidator {
|
||||
private static final Log log = LogFactory.getLog(PaymentApplyInvoiceValidator.class);
|
||||
PaymentApplyInvoiceValidator() {
|
||||
}
|
||||
|
||||
public void validate() {
|
||||
String operateKey = this.getOperateKey();
|
||||
if (StringUtils.equals(operateKey, "submit")) {
|
||||
log.info("进入PaymentApplyInvoiceValidator插件,开始调用二开逻辑");
|
||||
this.validateMultiRateContract();
|
||||
this.validateInvoiceSumAmount();
|
||||
this.validateInvoiceApplyAmount();
|
||||
|
@ -34,18 +40,31 @@ class PaymentApplyInvoiceValidator extends AbstractValidator {
|
|||
}
|
||||
|
||||
protected void validateMultiRateContract() {
|
||||
log.info("PaymentApplyInvoiceValidator插件,调用validateMultiRateContract方法");
|
||||
ExtendedDataEntity[] dataEntities = this.getDataEntities();
|
||||
ExtendedDataEntity[] var2 = dataEntities;
|
||||
int var3 = dataEntities.length;
|
||||
|
||||
for(int var4 = 0; var4 < var3; ++var4) {
|
||||
for (int var4 = 0; var4 < var3; ++var4) {
|
||||
ExtendedDataEntity dataEntity = var2[var4];
|
||||
DynamicObject bill = dataEntity.getDataEntity();
|
||||
int a = 0;
|
||||
String sourcetype = bill.getString("sourcetype");//付款类型
|
||||
log.info("调用PaymentApplyInvoiceValidator插件,判断付款类型值:" +sourcetype);
|
||||
if (StringUtils.equals(sourcetype, "01")) {
|
||||
//非合同付款
|
||||
a++;
|
||||
}
|
||||
DynamicObjectCollection entries = bill.getDynamicObjectCollection("entryentity");
|
||||
|
||||
for(int i = 0; i < entries.size(); ++i) {
|
||||
DynamicObject entry = (DynamicObject)entries.get(i);
|
||||
DynamicObject contract = entry.getDynamicObject("contract");
|
||||
for (int i = 0; i < entries.size(); ++i) {
|
||||
DynamicObject entry = entries.get(i);
|
||||
DynamicObject contract = null;
|
||||
log.info("调用PaymentApplyInvoiceValidator插件,进行跳过合同内容");
|
||||
if (a == 0) {
|
||||
//合同付款
|
||||
contract = entry.getDynamicObject("contract");
|
||||
}
|
||||
DynamicObjectCollection subEntries = entry.getDynamicObjectCollection("subentryentity");
|
||||
if (contract!=null && contract.getBoolean("ismultirate") && (subEntries == null || subEntries.isEmpty())) {
|
||||
this.addWarningMessage(dataEntity, String.format(ResManager.loadKDString("合同【%s】未添加发票,税额可能存在偏差,请确认。", "PaymentApplyInvoiceValidateOp_0", "ec-ecpf-opplugin", new Object[0]), contract.getString("name")));
|
||||
|
@ -60,13 +79,13 @@ class PaymentApplyInvoiceValidator extends AbstractValidator {
|
|||
ExtendedDataEntity[] var2 = dataEntities;
|
||||
int var3 = dataEntities.length;
|
||||
|
||||
for(int var4 = 0; var4 < var3; ++var4) {
|
||||
for (int var4 = 0; var4 < var3; ++var4) {
|
||||
ExtendedDataEntity dataEntity = var2[var4];
|
||||
DynamicObject bill = dataEntity.getDataEntity();
|
||||
DynamicObjectCollection entries = bill.getDynamicObjectCollection("entryentity");
|
||||
|
||||
for(int i = 0; i < entries.size(); ++i) {
|
||||
DynamicObject entry = (DynamicObject)entries.get(i);
|
||||
for (int i = 0; i < entries.size(); ++i) {
|
||||
DynamicObject entry = (DynamicObject) entries.get(i);
|
||||
BigDecimal shouldPayAmount = entry.getBigDecimal("applyoftaxamount");
|
||||
DynamicObjectCollection subEntries = entry.getDynamicObjectCollection("subentryentity");
|
||||
if (subEntries == null || subEntries.isEmpty()) {
|
||||
|
@ -76,8 +95,8 @@ class PaymentApplyInvoiceValidator extends AbstractValidator {
|
|||
BigDecimal amount = BigDecimal.ZERO;
|
||||
|
||||
BigDecimal applyAmount;
|
||||
for(Iterator var13 = subEntries.iterator(); var13.hasNext(); amount = amount.add(applyAmount)) {
|
||||
DynamicObject object = (DynamicObject)var13.next();
|
||||
for (Iterator var13 = subEntries.iterator(); var13.hasNext(); amount = amount.add(applyAmount)) {
|
||||
DynamicObject object = (DynamicObject) var13.next();
|
||||
applyAmount = object.getBigDecimal("applyinvoftaxamt");
|
||||
}
|
||||
|
||||
|
@ -97,14 +116,14 @@ class PaymentApplyInvoiceValidator extends AbstractValidator {
|
|||
|
||||
BigDecimal totalApplyAmount;
|
||||
label123:
|
||||
for(int var5 = 0; var5 < var4; ++var5) {
|
||||
for (int var5 = 0; var5 < var4; ++var5) {
|
||||
ExtendedDataEntity dataEntity = var3[var5];
|
||||
DynamicObject bill = dataEntity.getDataEntity();
|
||||
DynamicObjectCollection contractEntries = bill.getDynamicObjectCollection("entryentity");
|
||||
if (contractEntries != null && !contractEntries.isEmpty()) {
|
||||
Iterator var9 = contractEntries.iterator();
|
||||
|
||||
while(true) {
|
||||
while (true) {
|
||||
DynamicObjectCollection invoiceEntries;
|
||||
do {
|
||||
do {
|
||||
|
@ -112,21 +131,21 @@ class PaymentApplyInvoiceValidator extends AbstractValidator {
|
|||
continue label123;
|
||||
}
|
||||
|
||||
DynamicObject contractEntry = (DynamicObject)var9.next();
|
||||
DynamicObject contractEntry = (DynamicObject) var9.next();
|
||||
invoiceEntries = contractEntry.getDynamicObjectCollection("subentryentity");
|
||||
} while(invoiceEntries == null);
|
||||
} while(invoiceEntries.isEmpty());
|
||||
} while (invoiceEntries == null);
|
||||
} while (invoiceEntries.isEmpty());
|
||||
|
||||
Iterator var12 = invoiceEntries.iterator();
|
||||
|
||||
while(var12.hasNext()) {
|
||||
DynamicObject invoiceEntry = (DynamicObject)var12.next();
|
||||
while (var12.hasNext()) {
|
||||
DynamicObject invoiceEntry = (DynamicObject) var12.next();
|
||||
DynamicObject invoice = invoiceEntry.getDynamicObject("invoice");
|
||||
if (invoice != null) {
|
||||
long invoiceId = invoice.getLong("id");
|
||||
totalApplyAmount = invoiceEntry.getBigDecimal("applyinvoftaxamt");
|
||||
totalApplyAmount = totalApplyAmount == null ? BigDecimal.ZERO : totalApplyAmount;
|
||||
invoiceApplyAmounts.put(invoiceId, ((BigDecimal)invoiceApplyAmounts.getOrDefault(invoiceId, BigDecimal.ZERO)).add(totalApplyAmount));
|
||||
invoiceApplyAmounts.put(invoiceId, ((BigDecimal) invoiceApplyAmounts.getOrDefault(invoiceId, BigDecimal.ZERO)).add(totalApplyAmount));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -140,11 +159,11 @@ class PaymentApplyInvoiceValidator extends AbstractValidator {
|
|||
if (existInvoices != null && !existInvoices.isEmpty()) {
|
||||
Iterator var21 = existInvoices.iterator();
|
||||
|
||||
while(var21.hasNext()) {
|
||||
DynamicObject existInvoice = (DynamicObject)var21.next();
|
||||
while (var21.hasNext()) {
|
||||
DynamicObject existInvoice = (DynamicObject) var21.next();
|
||||
long invoiceId = existInvoice.getLong("entryentity.subentryentity.invoice");
|
||||
BigDecimal applyAmount = existInvoice.getBigDecimal("entryentity.subentryentity.applyinvoftaxamt");
|
||||
invoiceApplyAmounts.put(invoiceId, ((BigDecimal)invoiceApplyAmounts.getOrDefault(invoiceId, BigDecimal.ZERO)).add(applyAmount));
|
||||
invoiceApplyAmounts.put(invoiceId, ((BigDecimal) invoiceApplyAmounts.getOrDefault(invoiceId, BigDecimal.ZERO)).add(applyAmount));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -152,14 +171,14 @@ class PaymentApplyInvoiceValidator extends AbstractValidator {
|
|||
int var24 = dataEntities.length;
|
||||
|
||||
label87:
|
||||
for(int var26 = 0; var26 < var24; ++var26) {
|
||||
for (int var26 = 0; var26 < var24; ++var26) {
|
||||
ExtendedDataEntity dataEntity = var22[var26];
|
||||
DynamicObject bill = dataEntity.getDataEntity();
|
||||
DynamicObjectCollection contractEntries = bill.getDynamicObjectCollection("entryentity");
|
||||
if (contractEntries != null && !contractEntries.isEmpty()) {
|
||||
Iterator var31 = contractEntries.iterator();
|
||||
|
||||
while(true) {
|
||||
while (true) {
|
||||
DynamicObjectCollection invoiceEntries;
|
||||
do {
|
||||
do {
|
||||
|
@ -167,18 +186,18 @@ class PaymentApplyInvoiceValidator extends AbstractValidator {
|
|||
continue label87;
|
||||
}
|
||||
|
||||
DynamicObject contractEntry = (DynamicObject)var31.next();
|
||||
DynamicObject contractEntry = (DynamicObject) var31.next();
|
||||
invoiceEntries = contractEntry.getDynamicObjectCollection("subentryentity");
|
||||
} while(invoiceEntries == null);
|
||||
} while(invoiceEntries.isEmpty());
|
||||
} while (invoiceEntries == null);
|
||||
} while (invoiceEntries.isEmpty());
|
||||
|
||||
Iterator var34 = invoiceEntries.iterator();
|
||||
|
||||
while(var34.hasNext()) {
|
||||
DynamicObject invoiceEntry = (DynamicObject)var34.next();
|
||||
while (var34.hasNext()) {
|
||||
DynamicObject invoiceEntry = (DynamicObject) var34.next();
|
||||
DynamicObject invoice = invoiceEntry.getDynamicObject("invoice");
|
||||
if (invoice != null) {
|
||||
totalApplyAmount = (BigDecimal)invoiceApplyAmounts.getOrDefault(invoice.getLong("id"), BigDecimal.ZERO);
|
||||
totalApplyAmount = (BigDecimal) invoiceApplyAmounts.getOrDefault(invoice.getLong("id"), BigDecimal.ZERO);
|
||||
BigDecimal totalOfTax = invoice.getBigDecimal("totaloftaxamount");
|
||||
totalOfTax = totalOfTax == null ? BigDecimal.ZERO : totalOfTax;
|
||||
if (totalApplyAmount.compareTo(totalOfTax) > 0) {
|
||||
|
|
|
@ -0,0 +1,144 @@
|
|||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by FernFlower decompiler)
|
||||
//
|
||||
|
||||
package zcgj.zcdev.zcdev.pr.plugin.form;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.EventObject;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.metadata.dynamicobject.DynamicObjectType;
|
||||
import kd.bos.dataentity.utils.StringUtils;
|
||||
import kd.bos.form.control.EntryGrid;
|
||||
import kd.bos.form.control.Search;
|
||||
import kd.bos.form.control.events.SearchEnterEvent;
|
||||
import kd.bos.form.control.events.SearchEnterListener;
|
||||
import kd.bos.form.events.BeforeDoOperationEventArgs;
|
||||
import kd.bos.form.operate.FormOperate;
|
||||
import kd.bos.form.plugin.AbstractFormPlugin;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
|
||||
/**
|
||||
* 领料申请单物料列表单:动态表单,出库单中新增行获取领料申请单的分录
|
||||
*/
|
||||
public class MaterialApplyEntryUIPluginExt extends AbstractFormPlugin implements SearchEnterListener {
|
||||
public MaterialApplyEntryUIPluginExt() {
|
||||
}
|
||||
|
||||
public void beforeBindData(EventObject e) {
|
||||
super.beforeBindData(e);
|
||||
this.refreshEntryEntity((String)null);
|
||||
}
|
||||
|
||||
public void registerListener(EventObject e) {
|
||||
super.registerListener(e);
|
||||
Search searchAp = (Search)this.getView().getControl("searchap");
|
||||
searchAp.addEnterListener(this);
|
||||
}
|
||||
|
||||
public void search(SearchEnterEvent paramSearchEnterEvent) {
|
||||
Search search = (Search)paramSearchEnterEvent.getSource();
|
||||
String searchText = paramSearchEnterEvent.getText();
|
||||
if (StringUtils.equals("searchap", search.getKey())) {
|
||||
this.refreshEntryEntity(searchText.trim());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void beforeDoOperation(BeforeDoOperationEventArgs args) {
|
||||
FormOperate formOperate = (FormOperate)args.getSource();
|
||||
String operateName = formOperate.getOperateKey();
|
||||
EntryGrid entryGrid = (EntryGrid)this.getControl("entryentity");
|
||||
int[] selectRows = entryGrid.getSelectRows();
|
||||
switch (operateName) {
|
||||
case "confirm":
|
||||
List<Long> applyEntryIdList = new ArrayList();
|
||||
|
||||
for(int i = 0; i < selectRows.length; ++i) {
|
||||
DynamicObject entry = this.getModel().getEntryRowEntity("entryentity", selectRows[i]);
|
||||
applyEntryIdList.add((Long)entry.get("applyentryid"));
|
||||
}
|
||||
|
||||
Map<String, Object> returnData = new HashMap();
|
||||
returnData.put("applyEntryIdList", applyEntryIdList);
|
||||
this.getView().returnDataToParent(returnData);
|
||||
this.getView().invokeOperation("close");
|
||||
default:
|
||||
}
|
||||
}
|
||||
|
||||
private void refreshEntryEntity(String searchText) {
|
||||
Map<String, Object> params = this.getView().getFormShowParameter().getCustomParams();
|
||||
Object applyBillIdObject = params.get("applyBillId");//出库单 领料申请单ID
|
||||
Object selectedEntryIdObject = params.get("selectedEntryId");//出库单 申请单分录id
|
||||
if (applyBillIdObject != null) {
|
||||
Long applyBillId = (Long)applyBillIdObject;
|
||||
List<Long> selectedApplyEntryIdList = new ArrayList();
|
||||
if (selectedEntryIdObject != null) {
|
||||
String applyEntryIdString = (String)selectedEntryIdObject;
|
||||
String[] applyEntryIdStringArr = applyEntryIdString.split(",");
|
||||
String[] var9 = applyEntryIdStringArr;
|
||||
int var10 = applyEntryIdStringArr.length;
|
||||
|
||||
for(int var11 = 0; var11 < var10; ++var11) {
|
||||
String item = var9[var11];
|
||||
if (StringUtils.isNotEmpty(item)) {
|
||||
selectedApplyEntryIdList.add(Long.parseLong(item));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DynamicObject applyBill = BusinessDataServiceHelper.loadSingle(applyBillId, "ecma_materialapplybill");//领料申请单
|
||||
this.getModel().setValue("currency", applyBill.getDynamicObject("currency"));//领料申请单 签约币别
|
||||
DynamicObjectCollection applyEntries = applyBill.getDynamicObjectCollection("entryentity");
|
||||
DynamicObjectCollection entryEntity = this.getModel().getEntryEntity("entryentity");
|
||||
entryEntity.clear();
|
||||
DynamicObjectType entryDt = entryEntity.getDynamicObjectType();
|
||||
Iterator var23 = applyEntries.iterator();
|
||||
|
||||
while(true) {
|
||||
Long id;
|
||||
BigDecimal restQty;
|
||||
String materialNumber;
|
||||
String materialName;
|
||||
DynamicObject entry;
|
||||
do {
|
||||
do {
|
||||
do {
|
||||
if (!var23.hasNext()) {
|
||||
this.getModel().updateEntryCache(entryEntity);
|
||||
this.getView().updateView("entryentity");
|
||||
return;
|
||||
}
|
||||
|
||||
entry = (DynamicObject)var23.next();
|
||||
id = (Long)entry.getPkValue();
|
||||
restQty = entry.getBigDecimal("restqty");
|
||||
DynamicObject material = entry.getDynamicObject("material");
|
||||
materialNumber = material.getString("number");
|
||||
materialName = material.getString("name");
|
||||
} while(selectedApplyEntryIdList.contains(id));
|
||||
} while(restQty.compareTo(BigDecimal.ZERO) == 0);
|
||||
} while(StringUtils.isNotEmpty(searchText) && !materialNumber.contains(searchText) && !materialName.contains(searchText));
|
||||
|
||||
DynamicObject newEntry = new DynamicObject(entryDt);
|
||||
newEntry.set("applyentryid", id);
|
||||
newEntry.set("material", entry.get("material"));
|
||||
newEntry.set("modelnum", entry.get("modelnum"));
|
||||
newEntry.set("zcgj_shebei", entry.get("zcgj_shebei"));//使用设备(二开添加
|
||||
newEntry.set("lotid", entry.get("lotid"));
|
||||
newEntry.set("realoutqty", entry.get("realoutqty"));
|
||||
newEntry.set("price", entry.get("price"));
|
||||
newEntry.set("amount", entry.get("amount"));
|
||||
entryEntity.add(newEntry);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,296 @@
|
|||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by FernFlower decompiler)
|
||||
//
|
||||
|
||||
package zcgj.zcdev.zcdev.pr.plugin.form;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.EventObject;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import kd.bos.bill.AbstractBillPlugIn;
|
||||
import kd.bos.bill.OperationStatus;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.resource.ResManager;
|
||||
import kd.bos.dataentity.utils.StringUtils;
|
||||
import kd.bos.entity.datamodel.events.ChangeData;
|
||||
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
|
||||
import kd.bos.form.CloseCallBack;
|
||||
import kd.bos.form.FormShowParameter;
|
||||
import kd.bos.form.ShowType;
|
||||
import kd.bos.form.events.BeforeDoOperationEventArgs;
|
||||
import kd.bos.form.events.ClosedCallBackEvent;
|
||||
import kd.bos.form.field.BasedataEdit;
|
||||
import kd.bos.form.field.events.BeforeF7SelectEvent;
|
||||
import kd.bos.form.field.events.BeforeF7SelectListener;
|
||||
import kd.bos.form.operate.FormOperate;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||
import kd.ec.basedata.common.utils.OpenPageUtils;
|
||||
|
||||
/**
|
||||
* 出库单:领料出库与领料申请关联逻辑
|
||||
*/
|
||||
public class MaterialOutApplyPluginExt extends AbstractBillPlugIn implements BeforeF7SelectListener {
|
||||
private static final String APPLYBILL = "applybill";
|
||||
private static final String MATERIAL_APPLY_ENTRY_FORM = "ecma_materialapplyentry";
|
||||
private static final String APPLY_ENTRY_CALLBACK = "applyEntryCallback";
|
||||
|
||||
public MaterialOutApplyPluginExt() {
|
||||
}
|
||||
|
||||
public void registerListener(EventObject e) {
|
||||
super.registerListener(e);
|
||||
BasedataEdit basedataEdit = (BasedataEdit)this.getControl("applybill");
|
||||
basedataEdit.addBeforeF7SelectListener(this);
|
||||
basedataEdit.addBeforeF7ViewDetailListener((beforeF7ViewDetailEvent) -> {
|
||||
beforeF7ViewDetailEvent.setCancel(true);
|
||||
this.getView().showForm(OpenPageUtils.buildBillShowParam(beforeF7ViewDetailEvent.getPkId(), "ecma_materialapplybill"));
|
||||
});
|
||||
}
|
||||
|
||||
public void beforeF7Select(BeforeF7SelectEvent arg0) {
|
||||
String name = arg0.getProperty().getName();
|
||||
if (StringUtils.equals(name, "applybill")) {
|
||||
this.beforeApplyBillSelect(arg0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void beforeDoOperation(BeforeDoOperationEventArgs args) {
|
||||
super.beforeDoOperation(args);
|
||||
FormOperate operate = (FormOperate)args.getSource();
|
||||
String operateKey = operate.getOperateKey();
|
||||
DynamicObject applyBill = (DynamicObject)this.getModel().getValue("applybill");
|
||||
if (StringUtils.equals("addnewentry", operateKey)) {
|
||||
if (applyBill != null) {
|
||||
this.openApplyEntryForm();
|
||||
} else {
|
||||
this.getModel().createNewEntryRow("entryentity");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected void beforeApplyBillSelect(BeforeF7SelectEvent arg0) {
|
||||
DynamicObject project = (DynamicObject)this.getModel().getValue("project");
|
||||
DynamicObject warehouse = (DynamicObject)this.getModel().getValue("warehouse");
|
||||
if (warehouse == null) {
|
||||
this.getView().showTipNotification(ResManager.loadKDString("请先选中仓库。", "MaterialOutApplyPlugin_1", "ec-ecma-formplugin", new Object[0]), 3000);
|
||||
arg0.setCancel(true);
|
||||
} else {
|
||||
if (project == null) {
|
||||
}
|
||||
|
||||
QFilter warehouseFilter = new QFilter("warehouse", "=", warehouse.getPkValue());
|
||||
QFilter materialOutFilter = new QFilter("materialout", "=", "0");
|
||||
materialOutFilter = materialOutFilter.and(warehouseFilter);
|
||||
if (project != null) {
|
||||
materialOutFilter.and(new QFilter("project", "=", project.getPkValue()));
|
||||
}
|
||||
|
||||
arg0.getCustomQFilters().add(materialOutFilter);
|
||||
}
|
||||
}
|
||||
|
||||
public void propertyChanged(PropertyChangedArgs e) {
|
||||
super.propertyChanged(e);
|
||||
String name = e.getProperty().getName();
|
||||
ChangeData changeData = e.getChangeSet()[0];
|
||||
if (StringUtils.equals(name, "applybill")) {
|
||||
this.applyBillChanged(changeData);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected void applyBillChanged(ChangeData changeData) {
|
||||
DynamicObject newValue = (DynamicObject)changeData.getNewValue();
|
||||
if (newValue != null) {
|
||||
newValue = BusinessDataServiceHelper.loadSingle(newValue.getPkValue(), "ecma_materialapplybill");
|
||||
this.carryHeadData(newValue);
|
||||
this.carryEntryData(newValue);
|
||||
this.getView().updateView();
|
||||
} else {
|
||||
this.getModel().deleteEntryData("entryentity");
|
||||
this.getModel().setValue("outamt", 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected void carryEntryData(DynamicObject applyBill) {
|
||||
DynamicObjectCollection entries = this.getModel().getEntryEntity("entryentity");
|
||||
entries.clear();
|
||||
DynamicObjectCollection applyEntries = applyBill.getDynamicObjectCollection("entryentity");
|
||||
if (applyEntries != null && !applyEntries.isEmpty()) {
|
||||
Iterator var4 = applyEntries.iterator();
|
||||
|
||||
while(var4.hasNext()) {
|
||||
DynamicObject applyEntry = (DynamicObject)var4.next();
|
||||
BigDecimal restQty = applyEntry.getBigDecimal("restqty");
|
||||
if (restQty.compareTo(BigDecimal.ZERO) != 0) {
|
||||
DynamicObject newEntry = new DynamicObject(entries.getDynamicObjectType());
|
||||
newEntry.set("applyentryid", applyEntry.getLong("id"));
|
||||
newEntry.set("material", applyEntry.get("material"));
|
||||
newEntry.set("modelnum", applyEntry.get("modelnum"));
|
||||
newEntry.set("zcgj_shebei", applyEntry.get("zcgj_shebei"));//使用设备(二开添加
|
||||
newEntry.set("lotid", applyEntry.get("lotid"));
|
||||
newEntry.set("lot", applyEntry.get("lot"));
|
||||
newEntry.set("assmeasureunit", applyEntry.get("assmeasureunit"));
|
||||
newEntry.set("assqty", applyEntry.get("assqty"));
|
||||
newEntry.set("measureunit", applyEntry.get("measureunit"));
|
||||
newEntry.set("qty", applyEntry.get("restqty"));
|
||||
newEntry.set("applyqty", applyEntry.get("qty"));
|
||||
newEntry.set("price", applyEntry.get("price"));
|
||||
newEntry.set("amount", applyEntry.get("amount"));
|
||||
newEntry.set("ismainmaterial", applyEntry.get("ismainmaterial"));
|
||||
newEntry.set("unitproject", applyEntry.get("unitprojectentry"));
|
||||
newEntry.set("procbs", applyEntry.get("procbs"));
|
||||
newEntry.set("ca", applyEntry.get("ca"));
|
||||
newEntry.set("prowbs", applyEntry.get("prowbs"));
|
||||
newEntry.set("proboq", applyEntry.get("proboq"));
|
||||
newEntry.set("matinventory", applyEntry.get("matinventory"));
|
||||
entries.add(newEntry);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.getModel().updateEntryCache(entries);
|
||||
}
|
||||
|
||||
protected void carryEntryDataFromReturnData(DynamicObject applyBill, List<Long> applyEntryIdList) {
|
||||
DynamicObjectCollection entries = this.getModel().getEntryEntity("entryentity");
|
||||
DynamicObjectCollection applyEntries = applyBill.getDynamicObjectCollection("entryentity");
|
||||
if (applyEntries != null && !applyEntries.isEmpty()) {
|
||||
Iterator var5 = applyEntries.iterator();
|
||||
|
||||
while(var5.hasNext()) {
|
||||
DynamicObject applyEntry = (DynamicObject)var5.next();
|
||||
if (applyEntryIdList.contains(applyEntry.getPkValue())) {
|
||||
DynamicObject newEntry = new DynamicObject(entries.getDynamicObjectType());
|
||||
newEntry.set("applyentryid", applyEntry.getLong("id"));
|
||||
newEntry.set("material", applyEntry.get("material"));
|
||||
newEntry.set("modelnum", applyEntry.get("modelnum"));
|
||||
newEntry.set("zcgj_shebei", applyEntry.get("zcgj_shebei"));//使用设备(二开添加
|
||||
newEntry.set("lotid", applyEntry.get("lotid"));
|
||||
newEntry.set("lot", applyEntry.get("lot"));
|
||||
newEntry.set("assmeasureunit", applyEntry.get("assmeasureunit"));
|
||||
newEntry.set("assqty", applyEntry.get("assqty"));
|
||||
newEntry.set("measureunit", applyEntry.get("measureunit"));
|
||||
newEntry.set("qty", applyEntry.get("restqty"));
|
||||
newEntry.set("applyqty", applyEntry.get("qty"));
|
||||
newEntry.set("price", applyEntry.get("price"));
|
||||
newEntry.set("amount", applyEntry.get("amount"));
|
||||
newEntry.set("ismainmaterial", applyEntry.get("ismainmaterial"));
|
||||
newEntry.set("unitproject", applyEntry.get("unitprojectentry"));
|
||||
newEntry.set("procbs", applyEntry.get("procbs"));
|
||||
newEntry.set("ca", applyEntry.get("ca"));
|
||||
newEntry.set("prowbs", applyEntry.get("prowbs"));
|
||||
newEntry.set("proboq", applyEntry.get("proboq"));
|
||||
newEntry.set("matinventory", applyEntry.get("matinventory"));
|
||||
entries.add(newEntry);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.getModel().updateEntryCache(entries);
|
||||
this.getView().updateView("entryentity");
|
||||
}
|
||||
|
||||
protected void carryHeadData(DynamicObject applyBill) {
|
||||
this.getModel().beginInit();
|
||||
DynamicObject transType = applyBill.getDynamicObject("transtype");
|
||||
if (transType != null) {
|
||||
this.getModel().setValue("transtype", transType.getPkValue());
|
||||
}
|
||||
|
||||
DynamicObject supplier = applyBill.getDynamicObject("supplier");
|
||||
if (supplier != null) {
|
||||
this.getModel().setValue("supplier", supplier.getPkValue());
|
||||
}
|
||||
|
||||
DynamicObject labour = applyBill.getDynamicObject("labour");
|
||||
if (labour != null) {
|
||||
this.getModel().setValue("labour", labour.getPkValue());
|
||||
}
|
||||
|
||||
DynamicObject requestPerson = applyBill.getDynamicObject("requestperson");
|
||||
if (requestPerson != null) {
|
||||
this.getModel().setValue("requestperson", requestPerson.getPkValue());
|
||||
}
|
||||
|
||||
this.getModel().setValue("reqpersonname", applyBill.getString("reqpersonname"));
|
||||
DynamicObject warehouse = applyBill.getDynamicObject("warehouse");
|
||||
if (warehouse != null) {
|
||||
this.getModel().setValue("warehouse", warehouse.getPkValue());
|
||||
}
|
||||
|
||||
this.getModel().setValue("ismulticurrency", applyBill.getString("ismulticurrency"));
|
||||
DynamicObject currency = applyBill.getDynamicObject("currency");
|
||||
if (currency != null) {
|
||||
this.getModel().setValue("currency", currency.getPkValue());
|
||||
}
|
||||
|
||||
DynamicObject stdCurrency = applyBill.getDynamicObject("stdcurrency");
|
||||
if (stdCurrency != null) {
|
||||
this.getModel().setValue("stdcurrency", stdCurrency.getPkValue());
|
||||
}
|
||||
|
||||
DynamicObject exRateTable = applyBill.getDynamicObject("exratetable");
|
||||
if (exRateTable != null) {
|
||||
this.getModel().setValue("exratetable", exRateTable.getPkValue());
|
||||
}
|
||||
|
||||
DynamicObject cont = applyBill.getDynamicObject("contract");
|
||||
if (null != cont) {
|
||||
this.getModel().setValue("contract", cont);
|
||||
}
|
||||
|
||||
this.getModel().setValue("exchangedate", applyBill.getString("exchangedate"));
|
||||
this.getModel().setValue("exchangerate", applyBill.getString("exchangerate"));
|
||||
this.getModel().setValue("outamt", applyBill.getString("totalapplyamount"));
|
||||
this.getModel().setValue("stdoutamt", applyBill.getString("stdtotalapplyamount"));
|
||||
this.getModel().endInit();
|
||||
}
|
||||
|
||||
private void openApplyEntryForm() {
|
||||
DynamicObject applyBill = (DynamicObject)this.getModel().getValue("applybill");//领料申请单
|
||||
DynamicObjectCollection entries = this.getModel().getEntryEntity("entryentity");
|
||||
StringBuffer selectedEntryIdBuff = new StringBuffer();
|
||||
Iterator var4 = entries.iterator();
|
||||
|
||||
while(var4.hasNext()) {
|
||||
DynamicObject entry = (DynamicObject)var4.next();
|
||||
selectedEntryIdBuff.append(entry.get("applyentryid")).append(",");
|
||||
}
|
||||
|
||||
String selectedEntryId = selectedEntryIdBuff.toString();
|
||||
HashMap<String, Object> map = new HashMap();
|
||||
map.put("formId", "ecma_materialapplyentry");//领料申请单物料列表动态表单标识
|
||||
map.put("applyBillId", applyBill.getPkValue());//领料申请单ID
|
||||
map.put("selectedEntryId", selectedEntryId);//申请单分录id
|
||||
FormShowParameter showParameter = FormShowParameter.createFormShowParameter(map);
|
||||
showParameter.getOpenStyle().setShowType(ShowType.Modal);
|
||||
showParameter.setStatus(OperationStatus.ADDNEW);
|
||||
showParameter.setCloseCallBack(new CloseCallBack(this, "applyEntryCallback"));
|
||||
this.getView().showForm(showParameter);
|
||||
}
|
||||
|
||||
public void closedCallBack(ClosedCallBackEvent closedCallBackEvent) {
|
||||
String actionID = closedCallBackEvent.getActionId();
|
||||
Object returnData = closedCallBackEvent.getReturnData();
|
||||
DynamicObject applyBill = (DynamicObject)this.getModel().getValue("applybill");
|
||||
if (StringUtils.equals(actionID, "applyEntryCallback") && returnData != null) {
|
||||
Map<String, Object> data = (Map)returnData;
|
||||
List<Long> applyEntryIdList = (List)data.get("applyEntryIdList");
|
||||
if (applyBill != null) {
|
||||
DynamicObject applyBillData = BusinessDataServiceHelper.loadSingle(applyBill.getPkValue(), "ecma_materialapplybill");
|
||||
this.carryEntryDataFromReturnData(applyBillData, applyEntryIdList);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -1,223 +0,0 @@
|
|||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by FernFlower decompiler)
|
||||
//
|
||||
|
||||
package zcgj.zcdev.zcdev.pr.plugin.form;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import kd.bos.dataentity.entity.DynamicObject;
|
||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||
import kd.bos.dataentity.metadata.dynamicobject.DynamicObjectType;
|
||||
import kd.bos.dataentity.resource.ResManager;
|
||||
import kd.bos.dataentity.utils.StringUtils;
|
||||
import kd.bos.entity.EntityMetadataCache;
|
||||
import kd.bos.entity.ExtendedDataEntity;
|
||||
import kd.bos.entity.MainEntityType;
|
||||
import kd.bos.entity.ValueMapItem;
|
||||
import kd.bos.entity.property.ComboProp;
|
||||
import kd.bos.entity.validate.AbstractValidator;
|
||||
import kd.bos.orm.query.QFilter;
|
||||
import kd.bos.servicehelper.QueryServiceHelper;
|
||||
import kd.ec.basedata.common.enums.BillStatusEnum;
|
||||
import kd.ec.basedata.common.enums.ContractStatusEnum;
|
||||
import kd.ec.basedata.common.enums.PlanAmtTypeEnum;
|
||||
|
||||
public class PaymentTypeValidatorExt extends AbstractValidator {
|
||||
public PaymentTypeValidatorExt() {
|
||||
}
|
||||
|
||||
public void validate() {
|
||||
String operateKey = this.getOperateKey();
|
||||
if (StringUtils.equals("submit", operateKey)) {
|
||||
this.validatePayType();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected void validatePayType() {
|
||||
Set<Long> balanceContractIds = new HashSet(16);
|
||||
Set<Long> bondContractIds = new HashSet(16);
|
||||
Set<Long> otherSubmitContractIds = new HashSet(16);
|
||||
Set<Long> submitBalanceContractIds = new HashSet(16);
|
||||
Set<Long> contractIds = new HashSet(16);
|
||||
Set<Long> paymentIds = new HashSet(16);
|
||||
ExtendedDataEntity[] dataEntities = this.getDataEntities();
|
||||
ExtendedDataEntity[] var8 = dataEntities;
|
||||
int var9 = dataEntities.length;
|
||||
|
||||
for(int var10 = 0; var10 < var9; ++var10) {
|
||||
ExtendedDataEntity dataEntity = var8[var10];
|
||||
DynamicObject bill = dataEntity.getDataEntity();
|
||||
paymentIds.add(bill.getLong("id"));
|
||||
DynamicObjectCollection entries = bill.getDynamicObjectCollection("entryentity");
|
||||
Iterator var14 = entries.iterator();
|
||||
|
||||
while(var14.hasNext()) {
|
||||
DynamicObject entry = (DynamicObject)var14.next();
|
||||
String payType = entry.getString("paymenttype");
|
||||
long contractId = entry.getDynamicObject("contract").getLong("id");
|
||||
contractIds.add(contractId);
|
||||
if (StringUtils.equals(PlanAmtTypeEnum.BALANCE.getValue(), payType)) {
|
||||
balanceContractIds.add(contractId);
|
||||
submitBalanceContractIds.add(contractId);
|
||||
} else if (StringUtils.equals(PlanAmtTypeEnum.BOND.getValue(), payType)) {
|
||||
bondContractIds.add(contractId);
|
||||
} else {
|
||||
otherSubmitContractIds.add(contractId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QFilter filter = new QFilter("entryentity.contract", "in", contractIds);
|
||||
filter.and("id", "not in", paymentIds);
|
||||
filter.and("billstatus", "in", new String[]{BillStatusEnum.SUBMIT.getValue(), BillStatusEnum.AUDIT.getValue()});
|
||||
DynamicObjectCollection payments = QueryServiceHelper.query("ec_paymentapply", "billstatus,entryentity.contract,entryentity.paymenttype", new QFilter[]{filter});
|
||||
Iterator var24 = payments.iterator();
|
||||
|
||||
while(var24.hasNext()) {
|
||||
DynamicObject payment = (DynamicObject)var24.next();
|
||||
String payType = payment.getString("entryentity.paymenttype");
|
||||
long contractId = payment.getLong("entryentity.contract");
|
||||
if (StringUtils.equals(PlanAmtTypeEnum.BALANCE.getValue(), payType)) {
|
||||
balanceContractIds.add(contractId);
|
||||
if (StringUtils.equals(BillStatusEnum.SUBMIT.getValue(), payment.getString("billstatus"))) {
|
||||
submitBalanceContractIds.add(contractId);
|
||||
}
|
||||
} else if (StringUtils.equals(PlanAmtTypeEnum.BOND.getValue(), payType)) {
|
||||
bondContractIds.add(contractId);
|
||||
} else if (StringUtils.equals(BillStatusEnum.SUBMIT.getValue(), payment.getString("billstatus"))) {
|
||||
otherSubmitContractIds.add(contractId);
|
||||
}
|
||||
}
|
||||
|
||||
Map<Long, Set<String>> contractPayPlanTypes = this.getContractPayPlanTypes(contractIds);
|
||||
Map<String, String> payTypeCombo = this.getPayTypeCombo();
|
||||
ExtendedDataEntity[] var29 = dataEntities;
|
||||
int var31 = dataEntities.length;
|
||||
|
||||
for(int var32 = 0; var32 < var31; ++var32) {
|
||||
ExtendedDataEntity dataEntity = var29[var32];
|
||||
DynamicObject bill = dataEntity.getDataEntity();
|
||||
DynamicObjectCollection entries = bill.getDynamicObjectCollection("entryentity");
|
||||
Iterator var18 = entries.iterator();
|
||||
|
||||
while(var18.hasNext()) {
|
||||
DynamicObject entry = (DynamicObject)var18.next();
|
||||
DynamicObject contract = entry.getDynamicObject("contract");
|
||||
String payType = entry.getString("paymenttype");
|
||||
this.contractPayPlanValidate(dataEntity, contract, payType, contractPayPlanTypes, payTypeCombo);
|
||||
this.prePayTypeValidate(dataEntity, contract, payType);
|
||||
this.payStageValidate(balanceContractIds, bondContractIds, payTypeCombo, dataEntity, contract, payType);
|
||||
this.payMethodValidate(dataEntity, contract, payType);
|
||||
this.balanceTypeValidate(otherSubmitContractIds, dataEntity, contract, payType);
|
||||
this.bondTypeValidate(submitBalanceContractIds, otherSubmitContractIds, dataEntity, contract, payType);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected void contractPayPlanValidate(ExtendedDataEntity dataEntity, DynamicObject contract, String payType, Map<Long, Set<String>> contractPayPlanTypes, Map<String, String> payTypeCombo) {
|
||||
Set<String> types = (Set)contractPayPlanTypes.get(contract.getLong("id"));
|
||||
if (types != null && !types.contains(payType) && !StringUtils.equals(PlanAmtTypeEnum.BALANCE.getValue(), payType)) {
|
||||
this.addErrorMessage(dataEntity, String.format(ResManager.loadKDString("合同【%1$s】付款条件中不包含付款类型【%2$s】,不允许付款。", "PaymentTypeValidator_8", "ec-contract-opplugin", new Object[0]), contract.getString("name"), payTypeCombo.getOrDefault(payType, "")));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected Map<Long, Set<String>> getContractPayPlanTypes(Set<Long> contractIds) {
|
||||
Map<Long, Set<String>> payPlanTypeMap = new HashMap(contractIds.size());
|
||||
QFilter contractFilter = new QFilter("id", "in", contractIds);
|
||||
DynamicObjectCollection contracts = QueryServiceHelper.query("ec_out_contract", "id,outcontpayplanentry.paytype", new QFilter[]{contractFilter});
|
||||
|
||||
Iterator var5;
|
||||
long contractId;
|
||||
Set payPlanTypes;
|
||||
for(var5 = contracts.iterator(); var5.hasNext(); payPlanTypeMap.put(contractId, payPlanTypes)) {
|
||||
DynamicObject contract = (DynamicObject)var5.next();
|
||||
contractId = contract.getLong("id");
|
||||
payPlanTypes = (Set)payPlanTypeMap.getOrDefault(contractId, new HashSet(4));
|
||||
String type = contract.getString("outcontpayplanentry.paytype");
|
||||
if (StringUtils.isNotEmpty(type)) {
|
||||
payPlanTypes.add(type);
|
||||
}
|
||||
}
|
||||
|
||||
var5 = payPlanTypeMap.values().iterator();
|
||||
|
||||
while(var5.hasNext()) {
|
||||
Set<String> planTypes = (Set)var5.next();
|
||||
if (planTypes.isEmpty()) {
|
||||
planTypes.add(PlanAmtTypeEnum.PREPAYMENT.getValue());
|
||||
planTypes.add(PlanAmtTypeEnum.SETTLEPAYMENT.getValue());
|
||||
planTypes.add(PlanAmtTypeEnum.BALANCE.getValue());
|
||||
planTypes.add(PlanAmtTypeEnum.BOND.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
return payPlanTypeMap;
|
||||
}
|
||||
|
||||
protected void bondTypeValidate(Set<Long> submitBalanceContractIds, Set<Long> otherSubmitContractIds, ExtendedDataEntity dataEntity, DynamicObject contract, String payType) {
|
||||
long contractId = contract.getLong("id");
|
||||
if (StringUtils.equals(payType, PlanAmtTypeEnum.BOND.getValue()) && (otherSubmitContractIds.contains(contractId) || submitBalanceContractIds.contains(contractId))) {
|
||||
this.addErrorMessage(dataEntity, String.format(ResManager.loadKDString("合同【%s】存在其他在途付款申请,无法进行质保金支付。", "PaymentTypeValidator_1", "ec-contract-opplugin", new Object[0]), contract.getString("name")));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected void balanceTypeValidate(Set<Long> otherSubmitContractIds, ExtendedDataEntity dataEntity, DynamicObject contract, String payType) {
|
||||
if (StringUtils.equals(payType, PlanAmtTypeEnum.BALANCE.getValue()) && otherSubmitContractIds.contains(contract.getLong("id"))) {
|
||||
this.addErrorMessage(dataEntity, String.format(ResManager.loadKDString("合同【%s】存在其他在途付款申请,无法进行尾款支付。", "PaymentTypeValidator_2", "ec-contract-opplugin", new Object[0]), contract.getString("name")));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected void payMethodValidate(ExtendedDataEntity dataEntity, DynamicObject contract, String payType) {
|
||||
if (contract.getBoolean("ispaybytasknode") && StringUtils.equals(PlanAmtTypeEnum.SETTLEPAYMENT.getValue(), payType)) {
|
||||
this.addErrorMessage(dataEntity, String.format(ResManager.loadKDString("合同【%s】为按节点支付,无法进行结算款支付。", "PaymentTypeValidator_3", "ec-contract-opplugin", new Object[0]), contract.getString("name")));
|
||||
} else if (!contract.getBoolean("ispaybytasknode") && StringUtils.equals(PlanAmtTypeEnum.PROGRESSPAYMENT.getValue(), payType)) {
|
||||
this.addErrorMessage(dataEntity, String.format(ResManager.loadKDString("合同【%s】为按月支付,无法进行进度款支付。", "PaymentTypeValidator_4", "ec-contract-opplugin", new Object[0]), contract.getString("name")));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected void payStageValidate(Set<Long> balanceContractIds, Set<Long> bondContractIds, Map<String, String> payTypeCombo, ExtendedDataEntity dataEntity, DynamicObject contract, String payType) {
|
||||
if (bondContractIds.contains(contract.getLong("id")) && !StringUtils.equals(PlanAmtTypeEnum.BOND.getValue(), payType)) {
|
||||
this.addErrorMessage(dataEntity, String.format(ResManager.loadKDString("合同【%1$s】已进入质保金支付阶段,无法进行%2$s支付。", "PaymentTypeValidator_9", "ec-contract-opplugin", new Object[0]), contract.getString("name"), payTypeCombo.get(payType)));
|
||||
} else if (balanceContractIds.contains(contract.getLong("id")) && !StringUtils.equals(PlanAmtTypeEnum.BALANCE.getValue(), payType) && !StringUtils.equals(PlanAmtTypeEnum.BOND.getValue(), payType)) {
|
||||
this.addErrorMessage(dataEntity, String.format(ResManager.loadKDString("合同【%1$s】已进入尾款支付阶段,无法进行%2$s支付。", "PaymentTypeValidator_10", "ec-contract-opplugin", new Object[0]), contract.getString("name"), payTypeCombo.get(payType)));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected void prePayTypeValidate(ExtendedDataEntity dataEntity, DynamicObject contract, String payType) {
|
||||
String contStatus = contract.getString("contstatus");
|
||||
if (StringUtils.equals(contStatus, ContractStatusEnum.OVERSETTLE.getValue()) && StringUtils.equals(PlanAmtTypeEnum.PREPAYMENT.getValue(), payType)) {
|
||||
this.addErrorMessage(dataEntity, String.format(ResManager.loadKDString("合同【%s】已决算,无法进行预付款支付。", "PaymentTypeValidator_7", "ec-contract-opplugin", new Object[0]), contract.getString("name")));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
protected Map<String, String> getPayTypeCombo() {
|
||||
MainEntityType paymentType = EntityMetadataCache.getDataEntityType("ec_paymentapply");
|
||||
DynamicObject paymentBill = new DynamicObject(paymentType);
|
||||
DynamicObjectType entryType = paymentBill.getDynamicObjectCollection("entryentity").getDynamicObjectType();
|
||||
ComboProp payTypeCombo = (ComboProp)entryType.getProperty("paymenttype");
|
||||
List<ValueMapItem> comboItems = payTypeCombo.getComboItems();
|
||||
Map<String, String> payTypeComboMap = new HashMap(comboItems.size());
|
||||
Iterator var7 = comboItems.iterator();
|
||||
|
||||
while(var7.hasNext()) {
|
||||
ValueMapItem comboItem = (ValueMapItem)var7.next();
|
||||
payTypeComboMap.put(comboItem.getValue(), comboItem.getName().getLocaleValue());
|
||||
}
|
||||
|
||||
return payTypeComboMap;
|
||||
}
|
||||
}
|
|
@ -14,7 +14,6 @@ import kd.bos.servicehelper.operation.SaveServiceHelper;
|
|||
import kd.ec.contract.opplugin.fund.PaymentApplyFundOp;
|
||||
import kd.ec.contract.opplugin.fund.validator.PaymentMaxAmountValidator;
|
||||
import kd.ec.contract.opplugin.fund.validator.PaymentTypeValidator;
|
||||
import kd.ec.contract.opplugin.validator.ContractMeasureValidator;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.HashMap;
|
||||
|
|
|
@ -24,13 +24,9 @@ import kd.bos.servicehelper.BusinessDataServiceHelper;
|
|||
import kd.bos.servicehelper.operation.DeleteServiceHelper;
|
||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||
import kd.ec.basedata.common.enums.PlanAmtTypeEnum;
|
||||
import kd.ec.contract.opplugin.fund.validator.PaymentDeductionValidator;
|
||||
import kd.ec.contract.opplugin.fund.validator.PaymentMaxAmountValidator;
|
||||
import kd.ec.contract.opplugin.fund.validator.PaymentPlanValidator;
|
||||
import kd.ec.contract.opplugin.fund.validator.PaymentProgressValidator;
|
||||
import kd.ec.contract.opplugin.fund.validator.PaymentReferenceValidator;
|
||||
import kd.ec.contract.opplugin.fund.validator.PaymentTypeValidator;
|
||||
import kd.ec.contract.opplugin.fund.validator.*;
|
||||
|
||||
//付款申请单二开系统插件:提交,审核,反审核操作注册的系统插件
|
||||
public class PaymentApplyFundOpExt extends AbstractOperationServicePlugIn {
|
||||
public PaymentApplyFundOpExt() {
|
||||
}
|
||||
|
@ -57,12 +53,12 @@ public class PaymentApplyFundOpExt extends AbstractOperationServicePlugIn {
|
|||
}
|
||||
|
||||
public void onAddValidators(AddValidatorsEventArgs e) {
|
||||
e.getValidators().add(new PaymentTypeValidator());
|
||||
e.getValidators().add(new PaymentPlanValidator());
|
||||
e.getValidators().add(new PaymentMaxAmountValidator());
|
||||
e.getValidators().add(new PaymentProgressValidator());
|
||||
// e.getValidators().add(new PaymentTypeValidator());
|
||||
// e.getValidators().add(new PaymentPlanValidator());
|
||||
// e.getValidators().add(new PaymentMaxAmountValidator());
|
||||
// e.getValidators().add(new PaymentProgressValidator());
|
||||
e.getValidators().add(new PaymentDeductionValidator());
|
||||
e.getValidators().add(new PaymentReferenceValidator());
|
||||
// e.getValidators().add(new PaymentReferenceValidator());
|
||||
}
|
||||
|
||||
public void endOperationTransaction(EndOperationTransactionArgs e) {
|
||||
|
@ -86,6 +82,11 @@ public class PaymentApplyFundOpExt extends AbstractOperationServicePlugIn {
|
|||
label50:
|
||||
for(int var5 = 0; var5 < var4; ++var5) {
|
||||
DynamicObject paymentApply = var3[var5];
|
||||
String sourcetype = paymentApply.getString("sourcetype");//付款类型
|
||||
if (StringUtils.equals(sourcetype, "01")) {
|
||||
//非合同付款
|
||||
return;
|
||||
}
|
||||
DynamicObjectCollection entryCol = paymentApply.getDynamicObjectCollection("entryentity");
|
||||
Iterator var8 = entryCol.iterator();
|
||||
|
||||
|
@ -174,6 +175,11 @@ public class PaymentApplyFundOpExt extends AbstractOperationServicePlugIn {
|
|||
for(int var5 = 0; var5 < var4; ++var5) {
|
||||
DynamicObject paymentApply = var3[var5];
|
||||
DynamicObjectCollection entryCol = paymentApply.getDynamicObjectCollection("entryentity");
|
||||
String sourcetype = paymentApply.getString("sourcetype");//付款类型
|
||||
if (StringUtils.equals(sourcetype, "01")) {
|
||||
//非合同付款
|
||||
break;
|
||||
}
|
||||
Iterator var8 = entryCol.iterator();
|
||||
|
||||
while(true) {
|
||||
|
|
|
@ -22,6 +22,7 @@ import kd.bos.orm.query.QFilter;
|
|||
import kd.bos.servicehelper.QueryServiceHelper;
|
||||
import kd.ec.basedata.common.enums.ContractStatusEnum;
|
||||
|
||||
//付款申请单提交操作插件
|
||||
public class PaymentContSubmitOpExt extends AbstractOperationServicePlugIn {
|
||||
public PaymentContSubmitOpExt() {
|
||||
}
|
||||
|
@ -43,11 +44,21 @@ public class PaymentContSubmitOpExt extends AbstractOperationServicePlugIn {
|
|||
for(int var5 = 0; var5 < var4; ++var5) {
|
||||
ExtendedDataEntity dataEntity = var3[var5];
|
||||
long newFormId = (Long)dataEntity.getDataEntity().getPkValue();
|
||||
int a = 0;
|
||||
String sourcetype = dataEntity.getDataEntity().getString("sourcetype");//付款类型
|
||||
if (StringUtils.equals(sourcetype, "01")) {
|
||||
//非合同付款
|
||||
a++;
|
||||
}
|
||||
DynamicObjectCollection entryEntity = dataEntity.getDataEntity().getDynamicObjectCollection("entryentity");
|
||||
|
||||
for(int i = 0; i < entryEntity.size(); ++i) {
|
||||
DynamicObject row = (DynamicObject)entryEntity.get(i);
|
||||
DynamicObject contract = row.getDynamicObject("contract");
|
||||
DynamicObject contract = null;
|
||||
if (a == 0) {
|
||||
//合同付款
|
||||
contract = row.getDynamicObject("contract");
|
||||
}
|
||||
if (contract != null) {
|
||||
String contStatus = contract.getString("contstatus");
|
||||
String contName = contract.getString("name");
|
||||
|
|
Loading…
Reference in New Issue