采购订单保存、提交重算历史未到账余额,历史未到账数量

This commit is contained in:
sez 2025-12-04 14:26:18 +08:00
parent bbda3e3188
commit a1fcaf5457
2 changed files with 54 additions and 2 deletions

View File

@ -3,8 +3,12 @@ package tqq9.lc123.cloud.app.plugin.form.pm;
import kd.bos.bill.AbstractBillPlugIn; import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection; 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.ChangeData;
import kd.bos.entity.datamodel.events.PropertyChangedArgs; import kd.bos.entity.datamodel.events.PropertyChangedArgs;
import kd.bos.form.events.AfterDoOperationEventArgs;
import kd.bos.form.events.BeforeDoOperationEventArgs;
import kd.bos.form.operate.FormOperate;
import kd.bos.orm.query.QFilter; import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.BusinessDataServiceHelper;
@ -60,4 +64,52 @@ public class PurorderCalculateBillPlugin extends AbstractBillPlugIn {
} }
} }
@Override
public void beforeDoOperation(BeforeDoOperationEventArgs args) {
super.beforeDoOperation(args);
FormOperate formOperate = (FormOperate) args.getSource();
String operateKey = formOperate.getOperateKey();
if ("save".equals(operateKey) || "submit".equals(operateKey)) {
DynamicObject supplier = (DynamicObject) this.getModel().getValue("supplier");
if (null != supplier) {
BigDecimal totalAmount = BigDecimal.ZERO;
BigDecimal totalCount = BigDecimal.ZERO;
//查询已审核未关闭非克隆上游单据编号为空数量-到货数量有优惠有返利含税单价*数量-到货数量
// 查询正常的采购订单 总额总数量
QFilter f1 = new QFilter("supplier.id", "=", supplier.getPkValue());
QFilter f2 = new QFilter("billstatus", "=", "C");//已审核
QFilter f3 = new QFilter("closestatus", "=", "A");//关闭状态正常
QFilter f4 = new QFilter("tqq9_sourcebillno", "=", "");//上游单据编号为空
DynamicObject[] pmBillArr = BusinessDataServiceHelper.load("pm_receiptnotice",
"id,billno,supplier,billentry.qty,billentry.tqq9_dhsl,billentry.tqq9_yyhyflje,tqq9_sourcebillno",
new QFilter[]{f1, f2, f3, f4});
for (DynamicObject bill : pmBillArr) {
//String billno = bill.getString("billno");
//String tqq9_sourcebillno = bill.getString("tqq9_sourcebillno");
DynamicObjectCollection entries = bill.getDynamicObjectCollection("billentry");
for (DynamicObject entry : entries) {
BigDecimal qty = entry.getBigDecimal("qty") == null ? BigDecimal.ZERO : entry.getBigDecimal("qty");//数量
BigDecimal tqq9_dhsl = entry.getBigDecimal("tqq9_dhsl") == null ? BigDecimal.ZERO : entry.getBigDecimal("tqq9_dhsl");//到货数量
BigDecimal wrkqty = qty.subtract(tqq9_dhsl);//未入库数量
totalCount = totalCount.add(wrkqty);
BigDecimal tqq9_disandrefoundprice = entry.getBigDecimal("tqq9_yyhyflje") == null ?
BigDecimal.ZERO : entry.getBigDecimal("tqq9_yyhyflje");//有优惠有返利含税单价
BigDecimal wrkAmount = tqq9_disandrefoundprice.multiply(wrkqty);
totalAmount = totalAmount.add(wrkAmount);
}
}
this.getModel().setValue("tqq9_lswdhje", totalAmount);
this.getModel().setValue("tqq9_lswdhsl", totalCount);
}
}
}
@Override
public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) {
super.afterDoOperation(afterDoOperationEventArgs);
}
} }

View File

@ -49,7 +49,7 @@ public class PurOrderPushPurRefundConverPlugin extends AbstractConvertPlugIn imp
"billentry.tqq9_brand,billentry.warehouse,billentry.qty,billentry.ispresent," + "billentry.tqq9_brand,billentry.warehouse,billentry.qty,billentry.ispresent," +
"billentry.ownertype,billentry.mversion,billentry.unit2nd,billentry.qtyunit2nd," + "billentry.ownertype,billentry.mversion,billentry.unit2nd,billentry.qtyunit2nd," +
"billentry.auxpty,billentry.discountrate,billentry.price,billentry.priceandtax," + "billentry.auxpty,billentry.discountrate,billentry.price,billentry.priceandtax," +
"billentry.amount,billentry.curamount,billentry.taxamount,billentry.curtaxamount," + "billentry.amount,billentry.curamount,billentry.taxamount,billentry.curtaxamount,billentry.tqq9_cs," +
"billentry.discountamount,billentry.amountandtax,billentry.curamountandtax,billentry.returnqty," + "billentry.discountamount,billentry.amountandtax,billentry.curamountandtax,billentry.returnqty," +
"billentry.returnbaseqty,billentry.tqq9_yyhyflje,billentry.tqq9_yyhwflje,billentry.lotnumber," + "billentry.returnbaseqty,billentry.tqq9_yyhyflje,billentry.tqq9_yyhwflje,billentry.lotnumber," +
"billentry.tqq9_goods,billentry.tqq9_wmsdetailid,billentry.producedate,billentry.expirydate,creator,createtime,modifier,modifytime,billentry.owner,billentry.taxrate,billentry.srcbillnumber,billentry.tqq9_inwarebillentryid", new QFilter[]{new QFilter("billentry.mainbillnumber", QCP.equals, mainbillnumber).and("billstatus", QCP.equals, "C")}); "billentry.tqq9_goods,billentry.tqq9_wmsdetailid,billentry.producedate,billentry.expirydate,creator,createtime,modifier,modifytime,billentry.owner,billentry.taxrate,billentry.srcbillnumber,billentry.tqq9_inwarebillentryid", new QFilter[]{new QFilter("billentry.mainbillnumber", QCP.equals, mainbillnumber).and("billstatus", QCP.equals, "C")});
@ -90,7 +90,7 @@ public class PurOrderPushPurRefundConverPlugin extends AbstractConvertPlugIn imp
Date modifytime = dynamicObject.getDate("modifytime");//修改时间 Date modifytime = dynamicObject.getDate("modifytime");//修改时间
DynamicObject linetype = object.getDynamicObject("linetype");//行类型 DynamicObject linetype = object.getDynamicObject("linetype");//行类型
DynamicObject tqq9_registration = object.getDynamicObject("tqq9_registration");//注册证 DynamicObject tqq9_registration = object.getDynamicObject("tqq9_registration");//注册证
DynamicObject tqq9_cs = object.getDynamicObject("tqq9_cs");//生产厂商 String tqq9_cs = object.getString("tqq9_cs");//生产厂商
String tqq9_licenseno = object.getString("tqq9_licenseno");//许可证 String tqq9_licenseno = object.getString("tqq9_licenseno");//许可证
DynamicObject tqq9_brand = masterid.getDynamicObject("tqq9_brand");//品牌 DynamicObject tqq9_brand = masterid.getDynamicObject("tqq9_brand");//品牌
DynamicObject warehouse = object.getDynamicObject("warehouse");//入库仓库 DynamicObject warehouse = object.getDynamicObject("warehouse");//入库仓库