diff --git a/lc123/cloud/app/plugin/form/pm/PuroderBillShareRefundPlugin.java b/lc123/cloud/app/plugin/form/pm/PuroderBillShareRefundPlugin.java index 40c8ac4..99e7334 100644 --- a/lc123/cloud/app/plugin/form/pm/PuroderBillShareRefundPlugin.java +++ b/lc123/cloud/app/plugin/form/pm/PuroderBillShareRefundPlugin.java @@ -8,6 +8,7 @@ import kd.bos.dataentity.utils.StringUtils; import kd.bos.entity.datamodel.IDataModel; import kd.bos.entity.datamodel.RowDataEntity; import kd.bos.entity.datamodel.events.AfterAddRowEventArgs; +import kd.bos.entity.datamodel.events.AfterDeleteRowEventArgs; import kd.bos.entity.datamodel.events.ChangeData; import kd.bos.entity.datamodel.events.PropertyChangedArgs; import kd.bos.logging.Log; @@ -65,6 +66,117 @@ public class PuroderBillShareRefundPlugin extends AbstractBillPlugIn { } } + @Override + public void afterDeleteRow(AfterDeleteRowEventArgs e) { + super.afterDeleteRow(e); + DynamicObject dataEntity = this.getModel().getDataEntity(true); + BigDecimal tqq9_hsxfsyje = dataEntity.getBigDecimal("tqq9_hsxfsyje");//单头含税现返使用金额 + if (tqq9_hsxfsyje.compareTo(BigDecimal.ZERO) > 0) { + DynamicObjectCollection billentries = dataEntity.getDynamicObjectCollection("billentry"); + if (billentries != null && billentries.size() > 0) { + BigDecimal remainRefundAmt = tqq9_hsxfsyje;//拆分后剩余的金额 + List seqs = new ArrayList<>(); + BigDecimal tqq9_totalamount = BigDecimal.ZERO; + for (int i = 0; i <= billentries.size() - 1; i++) { + DynamicObject billentry = billentries.get(i); + BigDecimal tqq9_amount = billentry.getBigDecimal("tqq9_amount");//明细折扣前价税合计 + tqq9_totalamount = tqq9_totalamount.add(tqq9_amount); + if (tqq9_amount.compareTo(BigDecimal.ZERO) > 0) { + seqs.add(i); + } + } + for (int i = 0; i < seqs.size(); i++) { + int seq = seqs.get(i); + if (i == seqs.size() - 1) { + //如果是最后一行 + this.getModel().setValue("tqq9_xfamount", remainRefundAmt, seq);//明细现返使用金额 + } else { + //如果不是最后一行 + BigDecimal tqq9_amount = (BigDecimal) this.getModel().getValue("tqq9_amount", seq);//明细折扣前价税合计 + if (tqq9_amount.compareTo(BigDecimal.ZERO) == 0) { + this.getModel().setValue("tqq9_xfamount", BigDecimal.ZERO, seq);//明细现返使用金额 + } else { + BigDecimal tqq9_xfamount = tqq9_hsxfsyje.multiply(tqq9_amount).divide(tqq9_totalamount, 10, RoundingMode.HALF_UP);//分录行含税金额比例 + this.getModel().setValue("tqq9_xfamount", tqq9_xfamount, seq);//明细现返使用金额 + remainRefundAmt = remainRefundAmt.subtract(tqq9_xfamount); + } + } + } + } + } + BigDecimal tqq9_hshfsyje = dataEntity.getBigDecimal("tqq9_hshfsyje");//单头含税货返使用金额 + if (tqq9_hshfsyje.compareTo(BigDecimal.ZERO) > 0) { + DynamicObjectCollection billentries = dataEntity.getDynamicObjectCollection("billentry"); + if (billentries != null && billentries.size() > 0) { + BigDecimal remainRefundAmt = tqq9_hshfsyje;//拆分后剩余的金额 + List seqs = new ArrayList<>(); + BigDecimal tqq9_totalamount = BigDecimal.ZERO; + for (int i = 0; i <= billentries.size() - 1; i++) { + DynamicObject billentry = billentries.get(i); + BigDecimal tqq9_amount = billentry.getBigDecimal("tqq9_amount");//明细折扣前价税合计 + tqq9_totalamount = tqq9_totalamount.add(tqq9_amount); + if (tqq9_amount.compareTo(BigDecimal.ZERO) > 0) { + seqs.add(i); + } + } + for (int i = 0; i <= seqs.size() - 1; i++) { + int seq = seqs.get(i); + if (i == seqs.size() - 1) { + //如果是最后一行 + this.getModel().setValue("tqq9_hfamount", remainRefundAmt, seq);//明细货返使用金额 + } else { + //如果不是最后一行 + BigDecimal tqq9_amount = (BigDecimal) this.getModel().getValue("tqq9_amount", seq);//明细折扣前价税合计 + + if (tqq9_amount.compareTo(BigDecimal.ZERO) == 0) { + this.getModel().setValue("tqq9_hfamount", BigDecimal.ZERO, seq);//明细货返使用金额 + } else { + BigDecimal tqq9_hfamount = tqq9_hshfsyje.multiply(tqq9_amount).divide(tqq9_totalamount, 10, RoundingMode.HALF_UP);//分录行含税金额比例 + this.getModel().setValue("tqq9_hfamount", tqq9_hfamount, seq);//明细货返使用金额 + remainRefundAmt = remainRefundAmt.subtract(tqq9_hfamount); + } + + } + } + } + } + BigDecimal tqq9_discountamount = dataEntity.getBigDecimal("tqq9_discountamount");//单头优惠金额 + if (tqq9_discountamount.compareTo(BigDecimal.ZERO) > 0) { + DynamicObjectCollection billentries = dataEntity.getDynamicObjectCollection("billentry"); + if (billentries != null && billentries.size() > 0) { + BigDecimal remainRefundAmt = tqq9_discountamount;//拆分后剩余的金额 + List seqs = new ArrayList<>(); + BigDecimal tqq9_totalamount = BigDecimal.ZERO; + for (int i = 0; i <= billentries.size() - 1; i++) { + DynamicObject billentry = billentries.get(i); + BigDecimal tqq9_amount = billentry.getBigDecimal("tqq9_amount");//明细折扣前价税合计 + tqq9_totalamount = tqq9_totalamount.add(tqq9_amount); + if (tqq9_amount.compareTo(BigDecimal.ZERO) > 0) { + seqs.add(i); + } + } + for (int i = 0; i <= seqs.size() - 1; i++) { + int seq = seqs.get(i); + if (i == seqs.size() - 1) { + //如果是最后一行 + this.getModel().setValue("tqq9_disamount", remainRefundAmt, seq);//明细优惠金额 + } else { + //如果不是最后一行 + BigDecimal tqq9_amount = (BigDecimal) this.getModel().getValue("tqq9_amount", seq);//明细折扣前价税合计 + if (tqq9_amount.compareTo(BigDecimal.ZERO) == 0) { + this.getModel().setValue("tqq9_disamount", BigDecimal.ZERO, seq);//明细优惠金额 + } else { + BigDecimal tqq9_disamount = tqq9_discountamount.multiply(tqq9_amount).divide(tqq9_totalamount, 10, RoundingMode.HALF_UP);//分录行含税金额比例 + this.getModel().setValue("tqq9_disamount", tqq9_disamount, seq);//明细优惠金额 + remainRefundAmt = remainRefundAmt.subtract(tqq9_disamount); + } + + } + } + } + } + } + @Override public void propertyChanged(PropertyChangedArgs e) { super.propertyChanged(e);