支出合同结算 微调金额/税额
This commit is contained in:
		
							parent
							
								
									60f6ae61b8
								
							
						
					
					
						commit
						3e9553704a
					
				| 
						 | 
				
			
			@ -1,6 +1,15 @@
 | 
			
		|||
package zcgj.zcdev.zcdev.pr.plugin.form;
 | 
			
		||||
 | 
			
		||||
import kd.bos.dataentity.entity.DynamicObject;
 | 
			
		||||
import kd.bos.dataentity.utils.StringUtils;
 | 
			
		||||
import kd.bos.entity.datamodel.events.ChangeData;
 | 
			
		||||
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
 | 
			
		||||
import kd.ec.basedata.common.enums.PayDirectionEnum;
 | 
			
		||||
import kd.ec.contract.formplugin.settle.ContractSettleCommonEditPlugin;
 | 
			
		||||
import kd.ec.contract.utils.SettleUpdateAmtUtils;
 | 
			
		||||
 | 
			
		||||
import java.math.BigDecimal;
 | 
			
		||||
import java.math.RoundingMode;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 单据界面插件
 | 
			
		||||
| 
						 | 
				
			
			@ -12,4 +21,111 @@ public class ContractSettleBillPlugin extends ContractSettleCommonEditPlugin{
 | 
			
		|||
    protected void setDateEditMinAndMaxDate() {
 | 
			
		||||
//        super.setDateEditMinAndMaxDate();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void propertyChanged(PropertyChangedArgs e) {
 | 
			
		||||
        String name = e.getProperty().getName();
 | 
			
		||||
        ChangeData changeData = e.getChangeSet()[0];
 | 
			
		||||
        if (StringUtils.equals(name, "contract")) {
 | 
			
		||||
            DynamicObject contract = (DynamicObject)changeData.getNewValue();
 | 
			
		||||
            this.clearUnitproject();
 | 
			
		||||
            this.contractChanged(contract);
 | 
			
		||||
        } else if (StringUtils.equals(name, "period")) {
 | 
			
		||||
            this.periodChanged(changeData);
 | 
			
		||||
        } else if (!StringUtils.equals(name, "begindate") && !StringUtils.equals(name, "enddate")) {
 | 
			
		||||
            if (StringUtils.equals(name, "issettlebymatin")) {
 | 
			
		||||
                this.isSettleByMaterialInChanged(changeData);
 | 
			
		||||
            } else if (StringUtils.equals(name, "issettlebyreconc")) {
 | 
			
		||||
                this.isSettleByReconciliationChanged(changeData);
 | 
			
		||||
            } else if (StringUtils.equals(name, "oftaxamount")) {
 | 
			
		||||
                this.ofTaxAmountChanged(changeData);
 | 
			
		||||
            } else if (StringUtils.equals(name, "amount")) {
 | 
			
		||||
                boolean checkbox= this.getModel().getDataEntity().getBoolean("zcgj_adjustmounttax");//获取微调金额
 | 
			
		||||
                if(checkbox){//微调打开,调用子类值改变方法
 | 
			
		||||
                    this.amountChanged(changeData);
 | 
			
		||||
                }else{//没打开,调用父类的
 | 
			
		||||
                    super.amountChanged(changeData);
 | 
			
		||||
                }
 | 
			
		||||
            } else if (StringUtils.equals(name, "taxamt")) {
 | 
			
		||||
                boolean checkbox= this.getModel().getDataEntity().getBoolean("zcgj_adjustmounttax");//获取微调金额
 | 
			
		||||
                if(checkbox){//微调打开,调用子类值改变方法
 | 
			
		||||
                    this.taxamtChanged(changeData);
 | 
			
		||||
                }
 | 
			
		||||
            } else if (StringUtils.equals(name, "rate")) {
 | 
			
		||||
                this.rateChanged(changeData);
 | 
			
		||||
            } else if (StringUtils.equals("unitproject", name)) {
 | 
			
		||||
                DynamicObject contract = (DynamicObject)this.getModel().getValue("contract");
 | 
			
		||||
                this.contractChanged(contract);
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            this.setDateEditMinAndMaxDate();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void taxamtChanged(ChangeData changeData) {
 | 
			
		||||
        int rowIndex = changeData.getRowIndex();
 | 
			
		||||
        BigDecimal taxamt = (BigDecimal)changeData.getNewValue();
 | 
			
		||||
        BigDecimal oftaxamount = (BigDecimal) this.getModel().getValue("oftaxamount",rowIndex);
 | 
			
		||||
        BigDecimal amount =  oftaxamount.subtract(taxamt);
 | 
			
		||||
        this.getModel().setValue("amount",amount,rowIndex);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected void rateChanged(ChangeData changeData) {
 | 
			
		||||
        int rowIndex = changeData.getRowIndex();
 | 
			
		||||
        boolean isMultiRate = (Boolean)this.getModel().getValue("ismultirate");
 | 
			
		||||
        BigDecimal ofTaxAmount = (BigDecimal)this.getModel().getValue("oftaxamount", rowIndex);
 | 
			
		||||
        BigDecimal amount = (BigDecimal)this.getModel().getValue("amount", rowIndex);
 | 
			
		||||
        BigDecimal taxRate = (BigDecimal)changeData.getNewValue();
 | 
			
		||||
        String ignoreRateChanged = this.getPageCache().get("ignoreRateChanged");
 | 
			
		||||
        if (ignoreRateChanged != null) {
 | 
			
		||||
            this.getPageCache().remove("ignoreRateChanged");
 | 
			
		||||
        } else {
 | 
			
		||||
            if (isMultiRate) {
 | 
			
		||||
                BigDecimal rate = BigDecimal.ONE.add(taxRate.divide(BigDecimal.valueOf(100L), 10, RoundingMode.HALF_UP));
 | 
			
		||||
                if (ofTaxAmount.compareTo(BigDecimal.ZERO) != 0) {
 | 
			
		||||
                    amount = ofTaxAmount.divide(rate, 6, 4);
 | 
			
		||||
                    BigDecimal taxAmount = ofTaxAmount.subtract(amount);
 | 
			
		||||
                    this.getModel().setValue("taxamt", taxAmount, rowIndex);
 | 
			
		||||
                    this.getModel().setValue("amount", amount, rowIndex);
 | 
			
		||||
                } else {
 | 
			
		||||
                    ofTaxAmount = amount.multiply(rate);
 | 
			
		||||
                    BigDecimal taxAmount = ofTaxAmount.subtract(amount);
 | 
			
		||||
                    this.getModel().setValue("taxamt", taxAmount, rowIndex);
 | 
			
		||||
                    this.getModel().setValue("oftaxamount", ofTaxAmount, rowIndex);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    protected void ofTaxAmountChanged(ChangeData changeData) {
 | 
			
		||||
        int rowIndex = changeData.getRowIndex();
 | 
			
		||||
        if (this.isNotNonDirection(rowIndex)) {
 | 
			
		||||
            BigDecimal ofTaxAmount = (BigDecimal)this.getModel().getValue("oftaxamount", rowIndex);
 | 
			
		||||
            BigDecimal rate = (BigDecimal)this.getModel().getValue("rate", rowIndex);
 | 
			
		||||
            BigDecimal amount = ofTaxAmount.divide(BigDecimal.ONE.add(rate.divide(BigDecimal.valueOf(100L), 10, RoundingMode.HALF_UP)), 10, 4);
 | 
			
		||||
            BigDecimal taxAmount = ofTaxAmount.subtract(amount);
 | 
			
		||||
            this.getModel().setValue("taxamt", taxAmount, rowIndex);
 | 
			
		||||
            this.getModel().setValue("amount", amount, rowIndex);
 | 
			
		||||
            this.checkNeedReComputeItem(rowIndex);
 | 
			
		||||
            SettleUpdateAmtUtils.setItemEntrySumAmt(this.getView());
 | 
			
		||||
            SettleUpdateAmtUtils.calAllTypeAmount(this.getModel());
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
    protected void amountChanged(ChangeData changeData) {
 | 
			
		||||
        int rowIndex = changeData.getRowIndex();
 | 
			
		||||
        BigDecimal amount = (BigDecimal)changeData.getNewValue();
 | 
			
		||||
        BigDecimal oftaxamount = (BigDecimal) this.getModel().getValue("oftaxamount",rowIndex);
 | 
			
		||||
        BigDecimal taxamt =  oftaxamount.subtract(amount);
 | 
			
		||||
        this.getModel().setValue("taxamt",taxamt,rowIndex);
 | 
			
		||||
        
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void clearUnitproject() {
 | 
			
		||||
        if (this.getPayDirection().equals(PayDirectionEnum.IN.getValue())) {
 | 
			
		||||
            this.getModel().setValue("unitproject", (Object)null);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue