lc/lc123/cloud/app/plugin/form/pm/PurRefundApplyFormPlugin.java

158 lines
7.4 KiB
Java
Raw Normal View History

2025-11-17 10:17:39 +00:00
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.ChangeData;
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
2025-11-18 05:50:32 +00:00
import kd.bos.form.control.EntryGrid;
2025-11-17 10:17:39 +00:00
import kd.bos.form.events.AfterDoOperationEventArgs;
import kd.bos.form.events.BeforeDoOperationEventArgs;
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 beforeDoOperation(BeforeDoOperationEventArgs args) {
super.beforeDoOperation(args);
FormOperate operate = (FormOperate) args.getSource();
String operateKey = operate.getOperateKey();
if ("tqq9_newentry_ydth".equals(operateKey)) {
2025-11-18 05:50:32 +00:00
String entry = "billentry";
EntryGrid control = getControl(entry);
int[] selectRows = control.getSelectRows();
if (selectRows.length == 0) {
this.getView().showTipNotification("请选择要执行的数据。");
return;
} else if (selectRows.length > 1) {
this.getView().showTipNotification("请选择一行数据。");
return;
}
int index = selectRows[0];
2025-11-17 10:17:39 +00:00
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) {
2025-11-18 05:50:32 +00:00
this.getModel().setValue("tqq9_qty_ydth", null, rowIndex);
2025-11-17 10:17:39 +00:00
this.getView().showMessage("异地退货明细中物料为:" + tqq9_material_ydth.getDynamicObject("masterid").getString("name") + "的数量不能超过物料明细对应的数量");
2025-11-18 05:50:32 +00:00
} else {
for (int i = 0; i < billentry.size(); i++) {
DynamicObject dynamicObject = billentry.get(i);
DynamicObject material = dynamicObject.getDynamicObject("material");
if (Objects.equals(tqq9_material_ydth, material)) {
this.getModel().setValue("tqq9_stsl", billentry_qty.subtract(ydth_qty), i);
break;
}
}
2025-11-17 10:17:39 +00:00
}
}
}
}
}