异地退货明细及校验

This commit is contained in:
sez 2025-11-17 18:17:39 +08:00
parent 20bb886219
commit a54727f3bf
2 changed files with 208 additions and 0 deletions

View File

@ -0,0 +1,160 @@
package tqq9.lc123.cloud.app.plugin.form.pm;
import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.dataentity.utils.StringUtils;
import kd.bos.entity.datamodel.events.AfterAddRowEventArgs;
import kd.bos.entity.datamodel.events.BeforeAddRowEventArgs;
import kd.bos.entity.datamodel.events.ChangeData;
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
import kd.bos.form.events.AfterDoOperationEventArgs;
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.list.ListShowParameter;
import kd.bos.logging.Log;
import kd.bos.logging.LogFactory;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import java.math.BigDecimal;
import java.util.EventObject;
import java.util.Objects;
/**
* 采购退货界面插件 异地退货
*/
public class PurRefundApplyFormPlugin extends AbstractBillPlugIn implements BeforeF7SelectListener {
private final static Log logger = LogFactory.getLog(PurorderEntryIntroPaybillPlugin.class);
@Override
public void registerListener(EventObject e) {
super.registerListener(e);
this.addItemClickListeners("tbmain");
BasedataEdit tqq9_thck_ydth = this.getControl("tqq9_thck_ydth");
tqq9_thck_ydth.addBeforeF7SelectListener(this);
}
@Override
public void closedCallBack(ClosedCallBackEvent closedCallBackEvent) {
super.closedCallBack(closedCallBackEvent);
}
/**
* 异地退货返回事件
*/
@Override
public void beforeDoOperation(BeforeDoOperationEventArgs args) {
super.beforeDoOperation(args);
FormOperate operate = (FormOperate) args.getSource();
String operateKey = operate.getOperateKey();
if ("tqq9_newentry_ydth".equals(operateKey)) {
int index = this.getModel().getEntryCurrentRowIndex("billentry");
DynamicObjectCollection billentry = this.getModel().getEntryEntity("billentry");
if (billentry.size() > index) {
DynamicObject dynamicObject = billentry.get(index);
DynamicObjectCollection tqq9_entryentity = this.getModel().getEntryEntity("tqq9_entryentity");
DynamicObject addNew = tqq9_entryentity.addNew();
addNew.set("tqq9_material_ydth", dynamicObject.get("material"));
addNew.set("tqq9_materialname_ydth", dynamicObject.get("materialname"));
addNew.set("tqq9_goods_ydth", dynamicObject.get("tqq9_goods"));
addNew.set("tqq9_brand_ydth", dynamicObject.get("tqq9_brand"));
addNew.set("tqq9_unit_ydth", dynamicObject.get("unit"));
addNew.set("tqq9_registration_ydth", dynamicObject.get("tqq9_registration"));
addNew.set("tqq9_licenseno_ydth", dynamicObject.get("tqq9_licenseno"));
addNew.set("tqq9_priceandtax_ydth", dynamicObject.get("priceandtax"));
addNew.set("tqq9_amountandtax_ydth", dynamicObject.get("amountandtax"));
addNew.set("tqq9_ph_ydth", dynamicObject.get("tqq9_ph"));
addNew.set("tqq9_productdate_ydth", dynamicObject.get("tqq9_productdate"));
addNew.set("tqq9_expiredate_ydth", dynamicObject.get("tqq9_expiredate"));
addNew.set("tqq9_cgthflid", dynamicObject.get("id"));
this.getModel().updateEntryCache(tqq9_entryentity);
this.getView().updateView("tqq9_entryentity");
}
}
}
@Override
public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) {
super.afterDoOperation(afterDoOperationEventArgs);
}
/**
* 出库批号根据了做筛选
*/
@Override
public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) {
String name = beforeF7SelectEvent.getProperty().getName();
if (StringUtils.equals("tqq9_thck_ydth", name)) {
QFilter qFilter = null;
DynamicObject tqq9_basedatafield = (DynamicObject) this.getModel().getValue("tqq9_basedatafield");
if (null != tqq9_basedatafield) {
qFilter = new QFilter("id", QCP.not_equals, tqq9_basedatafield.getLong("id"));
}
ListShowParameter param = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter();
param.getListFilterParameter().getQFilters().add(qFilter);
}
}
@Override
public void propertyChanged(PropertyChangedArgs e) {
super.propertyChanged(e);
String name = e.getProperty().getName();
if ("tqq9_qty_ydth".equals(name)) {
ChangeData changeData = e.getChangeSet()[0];
int rowIndex = changeData.getRowIndex();
DynamicObject tqq9_material_ydth = (DynamicObject) this.getModel().getValue("tqq9_material_ydth", rowIndex);
if (null != tqq9_material_ydth) {
DynamicObjectCollection billentry = this.getModel().getEntryEntity("billentry");
BigDecimal billentry_qty = BigDecimal.ZERO;//物料明细数量
for (DynamicObject dynamicObject : billentry) {
DynamicObject material = dynamicObject.getDynamicObject("material");
if (Objects.equals(tqq9_material_ydth, material)) {
BigDecimal qty = dynamicObject.getBigDecimal("qty") == null ? BigDecimal.ZERO : dynamicObject.getBigDecimal("qty");
billentry_qty = billentry_qty.add(qty);
break;
}
}
DynamicObjectCollection tqq9_entryentity = this.getModel().getEntryEntity("tqq9_entryentity");
BigDecimal ydth_qty = BigDecimal.ZERO;//异地退货数量
for (DynamicObject dynamicObject : tqq9_entryentity) {
DynamicObject ydth_material = dynamicObject.getDynamicObject("tqq9_material_ydth");
if (Objects.equals(tqq9_material_ydth, ydth_material)) {
BigDecimal tqq9_qty_ydth = dynamicObject.getBigDecimal("tqq9_qty_ydth") == null ? BigDecimal.ZERO : dynamicObject.getBigDecimal("tqq9_qty_ydth");
ydth_qty = ydth_qty.add(tqq9_qty_ydth);
}
}
if (ydth_qty.compareTo(billentry_qty) > 0) {
this.getView().showMessage("异地退货明细中物料为:" + tqq9_material_ydth.getDynamicObject("masterid").getString("name") + "的数量不能超过物料明细对应的数量");
}
}
}
}
@Override
public void beforeAddRow(BeforeAddRowEventArgs e) {
super.beforeAddRow(e);
}
@Override
public void afterAddRow(AfterAddRowEventArgs e) {
super.afterAddRow(e);
}
}

View File

@ -0,0 +1,48 @@
package tqq9.lc123.cloud.app.plugin.operate.pm;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.dataentity.utils.StringUtils;
import kd.bos.entity.ExtendedDataEntity;
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
import kd.bos.entity.plugin.AddValidatorsEventArgs;
import kd.bos.entity.plugin.args.BeforeOperationArgs;
import kd.bos.entity.validate.AbstractValidator;
import kd.bos.logging.Log;
import kd.bos.logging.LogFactory;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.sdk.plugin.Plugin;
import tqq9.lc123.cloud.app.plugin.utils.AutoFixLinkUtil;
import java.util.stream.Collectors;
/**
* 采购退货单保存操作插件
*/
public class PurRefundApplyValidOpPlugin extends AbstractOperationServicePlugIn implements Plugin {
private final static Log logger = LogFactory.getLog(PurRefundApplyValidOpPlugin.class);
@Override
public void onAddValidators(AddValidatorsEventArgs e) {
super.onAddValidators(e);
e.addValidator(new AbstractValidator() {
@Override
public void validate() {
ExtendedDataEntity[] dataEntities = this.getDataEntities();
for (ExtendedDataEntity extendeDataEntity : dataEntities) {
DynamicObject dataEntity = extendeDataEntity.getDataEntity();
DynamicObjectCollection billentry = dataEntity.getDynamicObjectCollection("billentry");
DynamicObjectCollection tqq9_entryentity = dataEntity.getDynamicObjectCollection("tqq9_entryentity");
}
}
});
}
}