diff --git a/main/java/shkd/repc/recon/opplugin/CalculationQuotaListOpPlugin.java b/main/java/shkd/repc/recon/opplugin/CalculationQuotaListOpPlugin.java new file mode 100644 index 0000000..8a2da31 --- /dev/null +++ b/main/java/shkd/repc/recon/opplugin/CalculationQuotaListOpPlugin.java @@ -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; + } +}