62 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Java
		
	
	
	
		
		
			
		
	
	
			62 lines
		
	
	
		
			2.9 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.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;
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								/**
							 | 
						|||
| 
								 | 
							
								 * 采购订单计算
							 | 
						|||
| 
								 | 
							
								 *      供应商发生改变,历史未到账余额,历史未到账数量
							 | 
						|||
| 
								 | 
							
								 */
							 | 
						|||
| 
								 | 
							
								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;
							 | 
						|||
| 
								 | 
							
								            // 查询正常的采购订单 总额,总数量
							 | 
						|||
| 
								 | 
							
								            QFilter f1 = new QFilter("supplier.id", "=", supplier.getPkValue());
							 | 
						|||
| 
								 | 
							
								            QFilter f2 = new QFilter("billstatus", "=", "C");//已审核的订单
							 | 
						|||
| 
								 | 
							
								            QFilter f3 = new QFilter("closestatus", "=", "A");//排除已关闭的订单
							 | 
						|||
| 
								 | 
							
								            DynamicObject[] pmBillArr = BusinessDataServiceHelper.load("pm_purorderbill",
							 | 
						|||
| 
								 | 
							
								                    "id,billno,totalamount,billentry.qty",
							 | 
						|||
| 
								 | 
							
								                    new QFilter[]{f1, f2, f3});
							 | 
						|||
| 
								 | 
							
								            for (DynamicObject bill : pmBillArr) {
							 | 
						|||
| 
								 | 
							
								                totalAmount = totalAmount.add(bill.getBigDecimal("totalamount"));
							 | 
						|||
| 
								 | 
							
								                DynamicObjectCollection entries = bill.getDynamicObjectCollection("billentry");
							 | 
						|||
| 
								 | 
							
								                for (DynamicObject entry : entries) {
							 | 
						|||
| 
								 | 
							
								                    totalCount = totalCount.add(entry.getBigDecimal("qty"));
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            //查询采购入库单的总金额,总数量
							 | 
						|||
| 
								 | 
							
								            QFilter qf1 = new QFilter("supplier.id", "=", supplier.getPkValue());
							 | 
						|||
| 
								 | 
							
								            QFilter qf2 = new QFilter("billstatus", "=", "C");
							 | 
						|||
| 
								 | 
							
								            DynamicObject[] imBillArr = BusinessDataServiceHelper.load("im_purinbill",
							 | 
						|||
| 
								 | 
							
								                    "id,billno,billentry.qty,billentry.amountandtax",
							 | 
						|||
| 
								 | 
							
								                    new QFilter[]{qf1, qf2});
							 | 
						|||
| 
								 | 
							
								            for (DynamicObject bill : imBillArr) {
							 | 
						|||
| 
								 | 
							
								                DynamicObjectCollection entries = bill.getDynamicObjectCollection("billentry");
							 | 
						|||
| 
								 | 
							
								                for (DynamicObject entry : entries) {
							 | 
						|||
| 
								 | 
							
								                    totalAmount = totalAmount.subtract(entry.getBigDecimal("amountandtax"));
							 | 
						|||
| 
								 | 
							
								                    totalCount = totalCount.subtract(entry.getBigDecimal("qty"));
							 | 
						|||
| 
								 | 
							
								                }
							 | 
						|||
| 
								 | 
							
								            }
							 | 
						|||
| 
								 | 
							
								            this.getModel().setValue("tqq9_lswdhje", totalAmount);
							 | 
						|||
| 
								 | 
							
								            this.getModel().setValue("tqq9_lswdhsl", totalCount);
							 | 
						|||
| 
								 | 
							
								        }
							 | 
						|||
| 
								 | 
							
								    }
							 | 
						|||
| 
								 | 
							
								}
							 |