package shkd.repc.recon.formplugin; import kd.bos.bill.AbstractBillPlugIn; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.form.events.AfterDoOperationEventArgs; import kd.bos.form.events.ClientCallBackEvent; import kd.bos.form.events.ClosedCallBackEvent; import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; import kd.macc.sca.algox.task.ServiceHelper; import kd.sdk.plugin.Plugin; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.EventObject; /** * 费用登记和付款申请的发票分录合计行表单插件 */ public class SumInvoiceEntryPlugin extends AbstractBillPlugIn implements Plugin { @Override public void afterBindData(EventObject e) { super.afterBindData(e); updateAmt(); } private void updateAmt(){ DynamicObject dataEntity = this.getModel().getDataEntity(); DynamicObjectCollection invoiceentry = dataEntity.getDynamicObjectCollection("invoiceentry"); if (invoiceentry!=null) { for (int i = 0; i < invoiceentry.size(); i++) { DynamicObject dynamicObject = invoiceentry.get(i); DynamicObject inventry_invoicebill = dynamicObject.getDynamicObject("inventry_invoicebill"); BigDecimal notaxamt = inventry_invoicebill.getBigDecimal("notaxamt"); BigDecimal tax = inventry_invoicebill.getBigDecimal("tax"); BigDecimal amount = inventry_invoicebill.getBigDecimal("amount"); //新增字段赋值 addFieldsRule(dynamicObject,inventry_invoicebill); dynamicObject.set("qeug_notaxamt",notaxamt); dynamicObject.set("qeug_tax",tax); dynamicObject.set("qeug_amount",amount); } this.getView().updateView("invoiceentry"); } } private void addFieldsRule(DynamicObject dynamicObject,DynamicObject invoiceBill) { //本次核销不含税金额 BigDecimal notTaxAmount; //本次核销金额的税额 BigDecimal taxAmount; Object pkValue = invoiceBill.getPkValue(); BigDecimal hasWriteOffAmt = dynamicObject.getBigDecimal("inventry_haswriteoffamt"); DynamicObject reconInvoiceBill = BusinessDataServiceHelper.loadSingle(pkValue, "recon_invoicebill"); if (reconInvoiceBill != null) { DynamicObjectCollection invoiceDetails = reconInvoiceBill.getDynamicObjectCollection("invoiceentry"); if (invoiceDetails!=null && invoiceDetails.size()!=0){ DynamicObject entry_taxrate = invoiceDetails.get(0).getDynamicObject("entry_taxrate"); BigDecimal taxrate = entry_taxrate.getBigDecimal("taxrate"); //本次核销不含税金额=含税金额(本次核销金额)÷ (1 + 税率) notTaxAmount=hasWriteOffAmt.divide(taxrate.divide(BigDecimal.valueOf(100)).add(BigDecimal.ONE),2, RoundingMode.HALF_UP); //本次核销金额的税额=含税金额(本次核销金额) - 本次核销不含税金额 taxAmount = hasWriteOffAmt.subtract(notTaxAmount).setScale(2, RoundingMode.HALF_UP); dynamicObject.set("qeug_amountfield",notTaxAmount); dynamicObject.set("qeug_inventry_haswriteoff",taxAmount); } } } @Override public void afterDoOperation(AfterDoOperationEventArgs args) { super.afterDoOperation(args); updateAmt(); } @Override public void closedCallBack(ClosedCallBackEvent closedCallBackEvent) { super.closedCallBack(closedCallBackEvent); updateAmt(); } }