合同非定额计算逻辑插件1.0

This commit is contained in:
ptt 2025-05-28 11:16:54 +08:00
parent f79ca2888f
commit 68bde8717c
1 changed files with 135 additions and 0 deletions

View File

@ -0,0 +1,135 @@
package shkd.repc.recon.opplugin;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
import kd.bos.entity.plugin.args.BeforeOperationArgs;
import java.math.BigDecimal;
import java.math.RoundingMode;
public class CalculationQuotaListOpPlugin extends AbstractOperationServicePlugIn {
@Override
public void beforeExecuteOperationTransaction(BeforeOperationArgs e) {
super.beforeExecuteOperationTransaction(e);
DynamicObject[] dataEntities1 = e.getDataEntities();
DynamicObject dynamicObject = dataEntities1[0];
DynamicObjectCollection qeug_orderformentry = dynamicObject.getDynamicObjectCollection("qeug_orderformentry");
for (int i = 0; qeug_orderformentry!=null&&i < qeug_orderformentry.size(); i++) {
DynamicObject dynamicObject1 = qeug_orderformentry.get(i);
/**
* 填写字段:数量不含税含税税率税额
*/
BigDecimal qty = dynamicObject1.getBigDecimal("qeug_contractnum");//数量
BigDecimal qeug_exclusiveprice = dynamicObject1.getBigDecimal("qeug_exclusiveprice");//不含税
BigDecimal qeug_taxprice = dynamicObject1.getBigDecimal("qeug_taxprice");//含税
BigDecimal qeug_taxrate = BigDecimal.ZERO;//税率
BigDecimal qeug_taxamount = dynamicObject1.getBigDecimal("qeug_taxamount");//税额
Object qeug_taxrate1 = dynamicObject1.get("qeug_taxrate");
if(qeug_taxrate1!=null){
qeug_taxrate = dynamicObject1.getBigDecimal("qeug_taxrate.taxrate");
}
boolean qty1 = returnComperZero(qty);//数量
if(!qty1){
e.setCancel(true);
e.setCancelMessage("数量必填");
return;
}
boolean noTaxPrice = returnComperZero(qeug_exclusiveprice);//不含税
boolean TaxPrice = returnComperZero(qeug_taxprice);//含税
boolean taxRate = returnComperZero(qeug_taxrate);//税率
boolean Tax = returnComperZero(qeug_taxamount);//税额
/**
* 计算字段:不含税含税不含税总价含税总价税额
*/
BigDecimal qeug_notaxtotalprice = BigDecimal.ZERO;//不含税总价
BigDecimal qeug_taxtotalprice = BigDecimal.ZERO;//含税总价
if(!noTaxPrice && TaxPrice && !taxRate && !Tax){
qeug_exclusiveprice = qeug_taxprice;
dynamicObject1.set("qeug_exclusiveprice",qeug_exclusiveprice);
qeug_notaxtotalprice = qty.multiply(qeug_exclusiveprice);
dynamicObject1.set("qeug_notaxtotalprice", qeug_notaxtotalprice);
qeug_taxtotalprice = qty.multiply(qeug_taxprice);
dynamicObject1.set("qeug_taxtotalprice", qeug_taxtotalprice);
}else if(!noTaxPrice && TaxPrice && !taxRate && Tax){
qeug_exclusiveprice = qeug_taxprice.subtract(qeug_taxamount.divide(qty, 2, RoundingMode.HALF_UP));
dynamicObject1.set("qeug_exclusiveprice",qeug_exclusiveprice);
qeug_notaxtotalprice = qty.multiply(qeug_exclusiveprice);
dynamicObject1.set("qeug_notaxtotalprice", qeug_notaxtotalprice);
qeug_taxtotalprice = qty.multiply(qeug_taxprice);
dynamicObject1.set("qeug_taxtotalprice", qeug_taxtotalprice);
}else if(!noTaxPrice && TaxPrice && taxRate && !Tax){
qeug_exclusiveprice = qeug_taxprice.divide(BigDecimal.ONE.add(qeug_taxamount), 2, RoundingMode.HALF_UP);
dynamicObject1.set("qeug_exclusiveprice",qeug_exclusiveprice);
qeug_notaxtotalprice = qty.multiply(qeug_exclusiveprice);
dynamicObject1.set("qeug_notaxtotalprice", qeug_notaxtotalprice);
qeug_taxtotalprice = qty.multiply(qeug_taxprice);
dynamicObject1.set("qeug_taxtotalprice", qeug_taxtotalprice);
dynamicObject1.set("qeug_taxamount",qeug_taxtotalprice.subtract(qeug_notaxtotalprice));
}else if(!noTaxPrice && TaxPrice && taxRate && Tax){
qeug_exclusiveprice = qeug_taxprice.subtract(qeug_taxamount.divide(qty, 2, RoundingMode.HALF_UP));
dynamicObject1.set("qeug_exclusiveprice",qeug_exclusiveprice);
qeug_notaxtotalprice = qty.multiply(qeug_exclusiveprice);
dynamicObject1.set("qeug_notaxtotalprice", qeug_notaxtotalprice);
qeug_taxtotalprice = qty.multiply(qeug_taxprice);
dynamicObject1.set("qeug_taxtotalprice", qeug_taxtotalprice);
}else if(noTaxPrice && !TaxPrice && !taxRate && !Tax){
qeug_taxprice = qeug_exclusiveprice;
dynamicObject1.set("qeug_taxprice",qeug_taxprice);
qeug_notaxtotalprice = qty.multiply(qeug_exclusiveprice);
dynamicObject1.set("qeug_notaxtotalprice", qeug_notaxtotalprice);
qeug_taxtotalprice = qty.multiply(qeug_taxprice);
dynamicObject1.set("qeug_taxtotalprice", qeug_taxtotalprice);
}else if(noTaxPrice && !TaxPrice && !taxRate && Tax){
qeug_taxprice = qeug_exclusiveprice.add(qeug_taxamount.divide(qty, 2, RoundingMode.HALF_UP));
dynamicObject1.set("qeug_taxprice",qeug_taxprice);
qeug_notaxtotalprice = qty.multiply(qeug_exclusiveprice);
dynamicObject1.set("qeug_notaxtotalprice", qeug_notaxtotalprice);
qeug_taxtotalprice = qty.multiply(qeug_taxprice);
dynamicObject1.set("qeug_taxtotalprice", qeug_taxtotalprice);
}else if(noTaxPrice && !TaxPrice && taxRate && !Tax){
qeug_taxprice = qeug_exclusiveprice.divide(BigDecimal.ONE.add(qeug_taxamount), 2, RoundingMode.HALF_UP);
dynamicObject1.set("qeug_taxprice",qeug_taxprice);
qeug_notaxtotalprice = qty.multiply(qeug_exclusiveprice);
dynamicObject1.set("qeug_notaxtotalprice", qeug_notaxtotalprice);
qeug_taxtotalprice = qty.multiply(qeug_taxprice);
dynamicObject1.set("qeug_taxtotalprice", qeug_taxtotalprice);
dynamicObject1.set("qeug_taxamount",qeug_taxtotalprice.subtract(qeug_notaxtotalprice));
}else if(noTaxPrice && !TaxPrice && taxRate && Tax){
qeug_taxprice = qeug_exclusiveprice.add(qeug_taxamount.divide(qty, 2, RoundingMode.HALF_UP));
dynamicObject1.set("qeug_taxprice",qeug_taxprice);
qeug_notaxtotalprice = qty.multiply(qeug_exclusiveprice);
dynamicObject1.set("qeug_notaxtotalprice", qeug_notaxtotalprice);
qeug_taxtotalprice = qty.multiply(qeug_taxprice);
dynamicObject1.set("qeug_taxtotalprice", qeug_taxtotalprice);
}else if(noTaxPrice && TaxPrice && !taxRate && !Tax){
qeug_notaxtotalprice = qty.multiply(qeug_exclusiveprice);
dynamicObject1.set("qeug_notaxtotalprice", qeug_notaxtotalprice);
qeug_taxtotalprice = qty.multiply(qeug_taxprice);
dynamicObject1.set("qeug_taxtotalprice", qeug_taxtotalprice);
dynamicObject1.set("qeug_taxamount",qeug_taxtotalprice.subtract(qeug_notaxtotalprice));
}else if(noTaxPrice && TaxPrice && !taxRate && Tax){
qeug_notaxtotalprice = qty.multiply(qeug_exclusiveprice);
dynamicObject1.set("qeug_notaxtotalprice", qeug_notaxtotalprice);
qeug_taxtotalprice = qty.multiply(qeug_taxprice);
dynamicObject1.set("qeug_taxtotalprice", qeug_taxtotalprice);
}else if(noTaxPrice && TaxPrice && taxRate && !Tax){
qeug_notaxtotalprice = qty.multiply(qeug_exclusiveprice);
dynamicObject1.set("qeug_notaxtotalprice", qeug_notaxtotalprice);
qeug_taxtotalprice = qty.multiply(qeug_taxprice);
dynamicObject1.set("qeug_taxtotalprice", qeug_taxtotalprice);
dynamicObject1.set("qeug_taxamount",qeug_taxtotalprice.subtract(qeug_notaxtotalprice));
}else if(noTaxPrice && TaxPrice && taxRate && Tax){
qeug_notaxtotalprice = qty.multiply(qeug_exclusiveprice);
dynamicObject1.set("qeug_notaxtotalprice", qeug_notaxtotalprice);
qeug_taxtotalprice = qty.multiply(qeug_taxprice);
dynamicObject1.set("qeug_taxtotalprice", qeug_taxtotalprice);
}
}
}
private boolean returnComperZero(BigDecimal bigDecimal){
return BigDecimal.ZERO.compareTo(bigDecimal) == -1;
}
}