116 lines
6.3 KiB
Java
116 lines
6.3 KiB
Java
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;
|
|
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.servicehelper.BusinessDataServiceHelper;
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
/**
|
|
* 采购订单计算
|
|
* 供应商发生改变,历史未到账余额,历史未到账数量
|
|
*/
|
|
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();
|
|
if ("supplier".equals(name)) {
|
|
BigDecimal totalAmount = BigDecimal.ZERO;
|
|
BigDecimal totalCount = BigDecimal.ZERO;
|
|
DynamicObject supplier = (DynamicObject) newValue;
|
|
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("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 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);
|
|
}
|
|
}
|