lc/lc123/cloud/app/plugin/form/pm/PurorderCalculateBillPlugin...

60 lines
3.0 KiB
Java
Raw Normal View History

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.entity.datamodel.events.ChangeData;
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import java.math.BigDecimal;
/**
* 采购订单计算
2025-11-14 07:19:21 +00:00
* 供应商发生改变历史未到账余额历史未到账数量
*/
public class PurorderCalculateBillPlugin extends AbstractBillPlugIn {
@Override
public void propertyChanged(PropertyChangedArgs e) {
super.propertyChanged(e);
String name = e.getProperty().getName();
ChangeData[] changeSet = e.getChangeSet();
Object newValue = changeSet[0].getNewValue();
2025-11-14 07:19:21 +00:00
if ("supplier".equals(name)) {
BigDecimal totalAmount = BigDecimal.ZERO;
BigDecimal totalCount = BigDecimal.ZERO;
DynamicObject supplier = (DynamicObject) newValue;
2025-11-14 07:19:21 +00:00
if (null != supplier) {
// 查询正常的采购订单 总额,总数量
QFilter f1 = new QFilter("supplier.id", "=", supplier.getPkValue());
QFilter f2 = new QFilter("billstatus", "=", "C");//已审核的订单
QFilter f3 = new QFilter("closestatus", "=", "A");//关闭状态正常
QFilter f4 = new QFilter("billentry.rowterminatestatus", "=", "A");//行终止状态正常
2025-11-14 07:19:21 +00:00
DynamicObject[] pmBillArr = BusinessDataServiceHelper.load("pm_purorderbill",
"id,billno,totalamount,billentry.qty,billentry.invqty,billentry.tqq9_disandrefoundprice",
new QFilter[]{f1, f2, f3, f4});
2025-11-14 07:19:21 +00:00
for (DynamicObject bill : pmBillArr) {
DynamicObjectCollection entries = bill.getDynamicObjectCollection("billentry");
for (DynamicObject entry : entries) {
BigDecimal qty = entry.getBigDecimal("qty") == null ? BigDecimal.ZERO : entry.getBigDecimal("qty");//数量
BigDecimal invqty = entry.getBigDecimal("invqty") == null ? BigDecimal.ZERO : entry.getBigDecimal("invqty");//已入库数量
BigDecimal wrkqty = qty.subtract(invqty);//未入库数量
totalCount = totalCount.add(wrkqty);
BigDecimal tqq9_disandrefoundprice = entry.getBigDecimal("tqq9_disandrefoundprice") == null ?
BigDecimal.ZERO : entry.getBigDecimal("tqq9_disandrefoundprice");//有优惠有返利含税单价
BigDecimal wrkAmount = tqq9_disandrefoundprice.multiply(wrkqty);
totalAmount = totalAmount.add(wrkAmount);
2025-11-14 07:19:21 +00:00
}
}
2025-11-14 07:19:21 +00:00
this.getModel().setValue("tqq9_lswdhje", totalAmount);
this.getModel().setValue("tqq9_lswdhsl", totalCount);
}
2025-11-14 07:19:21 +00:00
}
}
}